CustomAttributeBuilder.cs 1.7 KB

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