2002-03-23 Miguel de Icaza <miguel@ximian.com>
[mono.git] / mcs / class / corlib / System.Reflection.Emit / CustomAttributeBuilder.cs
1
2 //
3 // System.Reflection.Emit/CustomAttributeBuilder.cs
4 //
5 // Author:
6 //   Paolo Molaro (lupus@ximian.com)
7 //
8 // (C) 2001 Ximian, Inc.  http://www.ximian.com
9 //
10
11 using System;
12 using System.Reflection;
13 using System.Reflection.Emit;
14 using System.Runtime.CompilerServices;
15
16 namespace System.Reflection.Emit {
17         public class CustomAttributeBuilder {
18                 ConstructorInfo ctor;
19                 byte[] data;
20                 
21                 [MethodImplAttribute(MethodImplOptions.InternalCall)]
22                 static extern byte[] GetBlob(ConstructorInfo con, object[] constructorArgs, PropertyInfo[] namedProperties, object[] propertyValues, FieldInfo[] namedFields, object[] fieldValues);
23                 
24                 internal CustomAttributeBuilder( ConstructorInfo con, byte[] cdata) {
25                         ctor = con;
26                         data = (byte[])cdata.Clone ();
27                         /* should we check that the user supplied data is correct? */
28                 }
29                 
30                 public CustomAttributeBuilder( ConstructorInfo con, object[] constructorArgs)
31                         : this (con, constructorArgs, null, null, null, null) {
32                 }
33                 public CustomAttributeBuilder( ConstructorInfo con, object[] constructorArgs, FieldInfo[] namedFields, object[] fieldValues)
34                         : this (con, constructorArgs, null, null, namedFields, fieldValues) {
35                 }
36                 public CustomAttributeBuilder( ConstructorInfo con, object[] constructorArgs, PropertyInfo[] namedProperties, object[] propertyValues)
37                         : this (con, constructorArgs, namedProperties, propertyValues, null, null) {
38                 }
39                 public CustomAttributeBuilder( ConstructorInfo con, object[] constructorArgs, PropertyInfo[] namedProperties, object[] propertyValues, FieldInfo[] namedFields, object[] fieldValues) {
40                         ctor = con;
41                         data = GetBlob (con, constructorArgs, namedProperties, propertyValues, namedFields, fieldValues);
42                 }
43
44         }
45 }