CustomAttributeBuilder.cs 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  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. internal ConstructorInfo Ctor {
  18. get {return ctor;}
  19. }
  20. internal byte[] Data {
  21. get {return data;}
  22. }
  23. [MethodImplAttribute(MethodImplOptions.InternalCall)]
  24. static extern byte[] GetBlob(ConstructorInfo con, object[] constructorArgs, PropertyInfo[] namedProperties, object[] propertyValues, FieldInfo[] namedFields, object[] fieldValues);
  25. internal CustomAttributeBuilder( ConstructorInfo con, byte[] cdata) {
  26. ctor = con;
  27. data = (byte[])cdata.Clone ();
  28. /* should we check that the user supplied data is correct? */
  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. }