public sealed class ConstructorBuilder : ConstructorInfo
|
Attributes | Read-only Overridden: Retrieves the attributes for this constructor. |
CallingConvention (inherited from System.Reflection.MethodBase) |
Read-only See base class member description: System.Reflection.MethodBase.CallingConvention Gets a value indicating the calling conventions for this method. |
DeclaringType | Read-only Overridden: |
InitLocals | Read-write Gets or sets whether the local variables in this constructor should be zero-initialized. |
IsAbstract (inherited from System.Reflection.MethodBase) |
Read-only See base class member description: System.Reflection.MethodBase.IsAbstract Gets a value indicating whether the method is abstract. |
IsAssembly (inherited from System.Reflection.MethodBase) |
Read-only See base class member description: System.Reflection.MethodBase.IsAssembly Gets a value indicating whether this method can be called by other classes in the same assembly. |
IsConstructor (inherited from System.Reflection.MethodBase) |
Read-only See base class member description: System.Reflection.MethodBase.IsConstructor Gets a value indicating whether the method is a constructor. |
IsFamily (inherited from System.Reflection.MethodBase) |
Read-only See base class member description: System.Reflection.MethodBase.IsFamily Gets a value indicating whether access to this method is restricted to members of the class and members of its derived classes. |
IsFamilyAndAssembly (inherited from System.Reflection.MethodBase) |
Read-only See base class member description: System.Reflection.MethodBase.IsFamilyAndAssembly Gets a value indicating whether this method can be called by derived classes if they are in the same assembly. |
IsFamilyOrAssembly (inherited from System.Reflection.MethodBase) |
Read-only See base class member description: System.Reflection.MethodBase.IsFamilyOrAssembly Gets a value indicating whether this method can be called by derived classes, wherever they are, and by all classes in the same assembly. |
IsFinal (inherited from System.Reflection.MethodBase) |
Read-only See base class member description: System.Reflection.MethodBase.IsFinal Gets a value indicating whether this method is final. |
IsHideBySig (inherited from System.Reflection.MethodBase) |
Read-only See base class member description: System.Reflection.MethodBase.IsHideBySig Gets a value indicating whether only a member of the same kind with exactly the same signature is hidden in the derived class. |
IsPrivate (inherited from System.Reflection.MethodBase) |
Read-only See base class member description: System.Reflection.MethodBase.IsPrivate Gets a value indicating whether this member is private. |
IsPublic (inherited from System.Reflection.MethodBase) |
Read-only See base class member description: System.Reflection.MethodBase.IsPublic Gets a value indicating whether this is a public method. |
IsSpecialName (inherited from System.Reflection.MethodBase) |
Read-only See base class member description: System.Reflection.MethodBase.IsSpecialName Gets a value indicating whether this method has a special name. |
IsStatic (inherited from System.Reflection.MethodBase) |
Read-only See base class member description: System.Reflection.MethodBase.IsStatic Gets a value indicating whether the method is static. |
IsVirtual (inherited from System.Reflection.MethodBase) |
Read-only See base class member description: System.Reflection.MethodBase.IsVirtual Gets a value indicating whether the method is virtual. |
MemberType (inherited from System.Reflection.ConstructorInfo) |
Read-only See base class member description: System.Reflection.ConstructorInfo.MemberType Specifies the type of member that this instance reflects. This property is read-only. |
MethodHandle | Read-only Overridden: Retrieves the internal handle for the method. Use this handle to access the underlying metadata handle. |
Name | Read-only Overridden: Retrieves the name of this constructor. |
ReflectedType | Read-only Overridden: Holds a reference to the Type object from which this object was obtained. |
ReturnType | Read-only Retrieves the Type of this constructor's return value. |
Signature | Read-only Retrieves the signature of the field in the form of a string. |
AddDeclarativeSecurity | Adds declarative security to this constructor. |
DefineParameter | Defines a parameter of this constructor. |
Equals (inherited from System.Object) |
See base class member description: System.Object.Equals Derived from System.Object, the primary base class for all objects. |
GetCustomAttributes | Overloaded:GetCustomAttributes(bool inherit) Overridden: Returns all the custom attributes defined for this constructor. |
GetCustomAttributes | Overloaded:GetCustomAttributes(Type attributeType, bool inherit) Overridden: Returns the custom attributes identified by the given type. |
GetHashCode (inherited from System.Object) |
See base class member description: System.Object.GetHashCode Derived from System.Object, the primary base class for all objects. |
GetILGenerator | Gets an ILGenerator for this constructor. |
GetMethodImplementationFlags | Overridden: Returns the method implementation flags for this constructor. |
GetModule | Returns a reference to the module that contains this constructor. |
GetParameters | Overridden: Returns the parameters of this constructor. |
GetToken | Returns the MethodToken that represents the token for this constructor. |
GetType (inherited from System.Object) |
See base class member description: System.Object.GetType Derived from System.Object, the primary base class for all objects. |
Invoke (inherited from System.Reflection.ConstructorInfo) |
Overloaded:Invoke(object[] parameters) See base class member description: System.Reflection.ConstructorInfo.InvokeInvokes the constructor reflected by the instance that has the specified parameters, providing default values for the parameters not commonly used. |
Invoke (inherited from System.Reflection.MethodBase) |
Overloaded:Invoke(object obj, object[] parameters) See base class member description: System.Reflection.MethodBase.InvokeInvokes the underlying method or constructor represented by this MethodInfo object with the specified parameters. |
Invoke | Overloaded:Invoke(BindingFlags invokeAttr, Binder binder, object[] parameters, CultureInfo culture) Overridden: Invokes the constructor dynamically reflected by this instance on the given object, passing along the specified parameters, and under the constraints of the given binder. |
Invoke | Overloaded:Invoke(object obj, BindingFlags invokeAttr, Binder binder, object[] parameters, CultureInfo culture) Overridden: Dynamically invokes the constructor reflected by this instance with the specified arguments, under the constraints of the specified Binder. |
IsDefined | Overridden: Checks if the specified custom attribute type is defined. |
SetCustomAttribute | Overloaded:SetCustomAttribute(CustomAttributeBuilder customBuilder) Set a custom attribute using a custom attribute builder. |
SetCustomAttribute | Overloaded:SetCustomAttribute(ConstructorInfo con, byte[] binaryAttribute) Set a custom attribute using a specified custom attribute blob. |
SetImplementationFlags | Sets the method implementation flags for this constructor. |
SetSymCustomAttribute | Sets this constructor's custom attribute associated with symbolic information. |
ToString | Overridden: Returns this ConstructorBuilder instance as a String. |
Finalize (inherited from System.Object) |
See base class member description: System.Object.Finalize Derived from System.Object, the primary base class for all objects. |
MemberwiseClone (inherited from System.Object) |
See base class member description: System.Object.MemberwiseClone Derived from System.Object, the primary base class for all objects. |
Hierarchy:
public override MethodAttributes Attributes {get;}
|
public virtual CallingConventions CallingConvention {get;}
|
public override Type DeclaringType {get;}
|
public bool InitLocals {get; set;}
|
public bool IsAbstract {get;}
|
To get the MethodBase, first get the type. From the type, get the method. From the method, get the MethodBase. If the MethodBase or constructor is other than public, it is protected and cannot be readily accessed. To access a non-public method, set the BindingFlags mask to NonPublic in GetMethod.
class methodbase { public static int Main(string[] args) { Console.WriteLine ("\nReflection.MethodBase"); //Get the MethodBase of two methods. //Get the types Type MyType1 = Type.GetType("System.Runtime.Serialization.Formatter"); Type MyType2 = Type.GetType("System.Reflection.MethodBase"); //Get and display the methods MethodBase Mymethodbase1 = MyType1.GetMethod("WriteInt32", BindingFlags.NonPublic|BindingFlags.Instance); MethodBase Mymethodbase2 = MyType2.GetMethod("GetCurrentMethod", BindingFlags.Public|BindingFlags.Static); Console.Write("\nMymethodbase = " + Mymethodbase1.ToString()); if (Mymethodbase1.IsAbstract) Console.Write ("\nMymethodbase is an abstract method"); else Console.Write ("\nMymethodbase is not an abstract method"); Console.Write("\n\nMymethodbase = " + Mymethodbase2.ToString()); if (Mymethodbase2.IsAbstract) Console.Write ("\nMymethodbase is an abstract method"); else Console.Write ("\nMymethodbase is not an abstract method"); return 0; } } /* Produces the following output Reflection.MethodBase Mymethodbase = Void WriteInt32 (Int32, System.String) Mymethodbase is an abstract method Mymethodbase = System.Reflection.MethodBase GetCurrentMethod () Mymethodbase is not an abstract method */
public bool IsAssembly {get;}
|
To get the MethodBase, first get the type. From the type, get the method. From the method, get the MethodBase. If the MethodBase or constructor is other than public, it is protected and cannot be readily accessed. To access a non-public method, set the BindingFlags mask to NonPublic in GetMethod.
class methodbase { internal void f() { } public static int Main(string[] args) { Console.WriteLine ("\nReflection.MethodBase"); //Get the MethodBase of two methods. //Get the types Type MyType1 = Type.GetType("System.Runtime.Serialization.Formatter"); Type MyType2 = Type.GetType("methodbase"); //Get and display the methods and the IsAssembly MethodBase Mymethodbase1 = MyType1.GetMethod("WriteInt32",BindingFlags.NonPublic|BindingFlags.Instance); MethodBase Mymethodbase2 = MyType2.GetMethod("f", BindingFlags.NonPublic|BindingFlags.Instance); Console.Write("\nMymethodbase = " + Mymethodbase1.ToString()); if (Mymethodbase1.IsAssembly) Console.Write ("\nMymethodbase is an assembly method"); else Console.Write ("\nMymethodbase is not an assembly method"); Console.Write("\n\nMymethodbase = " + Mymethodbase2.ToString()); if (Mymethodbase2.IsAssembly) Console.Write ("\nMymethodbase is an assembly method"); else Console.Write ("\nMymethodbase is not an assembly method"); return 0; } } /* Produces the following output Reflection.MethodBase Mymethodbase = Void WriteInt32 (Int32, System.String) Mymethodbase is not an assembly method Mymethodbase = Void f() Mymethodbase is an assembly method */
public bool IsConstructor {get;}
|
public bool IsFamily {get;}
|
public bool IsFamilyAndAssembly {get;}
|
public bool IsFamilyOrAssembly {get;}
|
public bool IsFinal {get;}
|
To establish with certainty whether a method is overridable, use code such as this:
if (MethodInfo.IsVirtual && !MethodInfo.IsFinal)
If IsVirtual is false or IsFinal is true, then the method cannot be overridden.
using System; using System.Reflection; public class MyClass { public void MyMethod() { } public static void Main() { MethodBase m = typeof(MyClass).GetMethod("MyMethod"); Console.WriteLine(m.IsFinal); } }
public bool IsHideBySig {get;}
|
public bool IsPrivate {get;}
|
public bool IsPublic {get;}
|
class methodbase { public static int Main(string[] args) { Console.WriteLine("\nReflection.MethodBase"); //Get the MethodBase of a method. //Get the type Type MyType = Type.GetType("System.MulticastDelegate"); //Get and display the method MethodBase Mymethodbase = MyType.GetMethod("RemoveImpl",BindingFlags.NonPublic); Console.Write("\nMymethodbase = " + Mymethodbase); bool Myispublic = Mymethodbase.IsPublic; if (Myispublic) Console.Write ("\nMymethodbase is a public method"); else Console.Write ("\nMymethodbase is not a public method"); return 0; } } /* Produces the following output Reflection.MethodBase Mymethodbase = System.Delegate RemoveImpl (System.Delegate) Mymethodbase is not a public method */
public bool IsSpecialName {get;}
|
public bool IsStatic {get;}
|
public bool IsVirtual {get;}
|
To determine if a method is overridable, it is not sufficient to check that IsVirtual is true. For a method to be overridable, IsVirtual must be true and MethodBase.IsFinal must be false. For example, a method might be non-virtual, but it implements an interface method. The common language runtime requires that all methods that implement interface members must be marked as virtual; therefore, the compiler marks the method virtualfinal. So there are cases where a method is marked as virtual but is still not overridable.
To establish with certainty whether a method is overridable, use code such as this:
if (MethodInfo.IsVirtual && !MethodInfo.IsFinal)
If IsVirtual is false or IsFinal is true, then the method cannot be overridden.
using System; using System.Reflection; public class MyClass { public void MyMethod() { } public static void Main() { MethodBase m = typeof(MyClass).GetMethod("MyMethod"); Console.WriteLine(m.IsFinal); } }
public override MemberTypes MemberType {get;}
|
public override RuntimeMethodHandle MethodHandle {get;}
|
Exception Type | Condition |
---|---|
NotSupportedException | This property is not supported on this class. |
public override string Name {get;}
|
public override Type ReflectedType {get;}
|
public Type ReturnType {get;}
|
public string Signature {get;}
|
public void AddDeclarativeSecurity( |
action
pset
Exception Type | Condition |
---|---|
ArgumentOutOfRangeException | action is invalid (RequestMinimum, RequestOptional, and RequestRefuse are invalid). |
InvalidOperationException | The containing type has been previously created using TypeBuilder.CreateType. -or- The permission set pset contains an action that was added earlier by AddDeclarativeSecurity. |
ArgumentNullException | pset is null. |
public ParameterBuilder DefineParameter( |
iSequence
attributes
strParamName
Exception Type | Condition |
---|---|
ArgumentOutOfRangeException | position is less than or equal to zero, or it is greater than the number of parameters of the constructor. |
InvalidOperationException | The containing type has been created using TypeBuilder.CreateType. |
~ConstructorBuilder(); |
inherit
attributeType
inherit
public virtual int GetHashCode(); |
public ILGenerator GetILGenerator(); |
Exception Type | Condition |
---|---|
InvalidOperationException | If the constructor is a default constructor. |
public override MethodImplAttributes GetMethodImplementationFlags(); |
public Module GetModule(); |
public override ParameterInfo[] GetParameters(); |
Exception Type | Condition |
---|---|
InvalidOperationException | TypeBuilder.CreateType has not been called on this constructor's type. |
public MethodToken GetToken(); |
public Type GetType(); |
parameters
Exception Type | Condition |
---|---|
MemberAccessException | The attempt to access the constructor fails (that is, the class might be abstract), or the method is a class initializer. -or- The caller does not have permission to execute the constructor. |
ArgumentException | The parameters array does not contain values that match the types accepted by this constructor. |
TargetInvocationException | The invoked constructor throws an exception. The InnerException property of the TargetInvocationException will hold the exception thrown by the constructor. |
TargetParameterCountException | An incorrect number of parameters was passed. |
Access restrictions are ignored for fully trusted code. That is, private constructors, methods, fields, and properties can be accessed and invoked using reflection whenever the code is fully trusted.
This method is a convenience method for the following overloaded version, using default values. This method cannot be overridden.
obj
parameters
If the method or constructor represented by this instance takes a ByRef parameter, there is no special attribute required for that parameter in order to invoke the method or constructor using this function. If the parameters contain an uninitialized object, it is treated as System.Empty, which, with the default binder, can be widened to 0, 0.0 or String.
An argument list for the invoked method or constructor. This is an array of objects with the same number, order, and type as the parameters of the method or constructor to be invoked. If there are no parameters, this should be null.If the method or constructor represented by this instance takes a ByRef parameter, there is no special attribute required for that parameter in order to invoke the method or constructor using this function. If the parameters contain an uninitialized object, it is treated as System.Empty, which, with the default binder, can be widened to 0, 0.0 or String.
Exception Type | Condition |
---|---|
TargetException | The obj parameter is null and the method is not static. -or- The method is not declared or inherited by the class of obj. |
ArgumentException | The type of the parameters parameter does not match the signature of the method or constructor reflected by this instance. |
MemberAccessException | The caller does not have permission to invoke the method or constructor. |
TargetInvocationException | The invoked method or constructor throws an exception. |
TargetParameterCountException | The parameters array does not have the correct number of arguments. |
MethodAccessException | The caller does not have permission to execute the constructor. |
For example, consider a method such as MyMethod(int x, float y = 2.0). To invoke this method with only the first argument as MyMethod(4), pass one of the above binding flags and pass two arguments, namely, 4 for the first argument and Missing.Value for the second argument. Unless you use Missing.Value, you may not omit optional parameters with the Invoke method. If you must do so, use Type.InvokeMember instead.
This is a convenience method that calls the following Invoke method, passing null in the other parameters. If the invoked method throws an exception, Exception.GetBaseException returns the exception.
To invoke a static method using its MethodInfo object, the first parameter should be null, as shown in the following call:
Object myReturnValue =
myMethodInfo.Invoke(null, myParametersArray);
public override object Invoke( |
invokeAttr
binder
parameters
culture
Exception Type | Condition |
---|---|
NotSupportedException | This method is not currently supported. You can retrieve the constructor using Type.GetConstructor and call ConstructorInfo.Invoke on the returned ConstructorInfo. |
For example, if the constructor reflected by this instance is declared as public MyClass(String a, String b), then parameters should be an array of objects with length 2.
public override object Invoke( |
obj
invokeAttr
binder
parameters
culture
Exception Type | Condition |
---|---|
NotSupportedException | This method is not currently supported. You can retrieve the constructor using Type.GetConstructor and call ConstructorInfo.Invoke on the returned ConstructorInfo. |
Before calling the constructor, Invoke ensures that the caller has access permission, and that the parameters are of the correct number, order and type.
Access restrictions are ignored for fully-trusted code. That is, private constructors, methods, fields, and properties can be accessed and invoked using Reflection whenever the code is fully trusted.
attributeType
inherit
Exception Type | Condition |
---|---|
NotSupportedException | This method is not currently supported. You can retrieve the constructor using Type.GetConstructor and call MemberInfo.IsDefined on the returned ConstructorInfo. |
protected object MemberwiseClone(); |
public void SetCustomAttribute( |
customBuilder
Exception Type | Condition |
---|---|
ArgumentNullException | customBuilder is null. |
public void SetCustomAttribute( |
con
binaryAttribute
Exception Type | Condition |
---|---|
ArgumentNullException | con or binaryAttribute is null. |
public void SetImplementationFlags( |
attributes
Exception Type | Condition |
---|---|
InvalidOperationException | The containing type has been created using TypeBuilder.CreateType. |
name
data
Exception Type | Condition |
---|---|
InvalidOperationException | The containing type has been created using TypeBuilder.CreateType. -or- The module does not have a symbol writer defined. For example, the module is not a debug module. |
public override string ToString(); |