PropertyBuilder Class
Defines the properties for a type.
Assembly: mscorlib (in mscorlib.dll)
System.Reflection::MemberInfo
System.Reflection::PropertyInfo
System.Reflection.Emit::PropertyBuilder
| Name | Description | |
|---|---|---|
![]() | Attributes | Gets the attributes for this property.(Overrides PropertyInfo::Attributes.) |
![]() | CanRead | Gets a value indicating whether the property can be read.(Overrides PropertyInfo::CanRead.) |
![]() | CanWrite | Gets a value indicating whether the property can be written to.(Overrides PropertyInfo::CanWrite.) |
![]() | CustomAttributes | Gets a collection that contains this member's custom attributes.(Inherited from MemberInfo.) |
![]() | DeclaringType | Gets the class that declares this member.(Overrides MemberInfo::DeclaringType.) |
![]() | GetMethod | Gets the get accessor for this property.(Inherited from PropertyInfo.) |
![]() | IsSpecialName | Gets a value indicating whether the property is the special name.(Inherited from PropertyInfo.) |
![]() | MemberType | Gets a MemberTypes value indicating that this member is a property.(Inherited from PropertyInfo.) |
![]() | MetadataToken | Gets a value that identifies a metadata element.(Inherited from MemberInfo.) |
![]() | Module | Gets the module in which the type that declares the current property is being defined.(Overrides MemberInfo::Module.) |
![]() | Name | Gets the name of this member.(Overrides MemberInfo::Name.) |
![]() | PropertyToken | Retrieves the token for this property. |
![]() | PropertyType | Gets the type of the field of this property.(Overrides PropertyInfo::PropertyType.) |
![]() | ReflectedType | Gets the class object that was used to obtain this instance of MemberInfo.(Overrides MemberInfo::ReflectedType.) |
![]() | SetMethod | Gets the set accessor for this property.(Inherited from PropertyInfo.) |
| Name | Description | |
|---|---|---|
![]() | AddOtherMethod(MethodBuilder^) | Adds one of the other methods associated with this property. |
![]() | Equals(Object^) | Returns a value that indicates whether this instance is equal to a specified object.(Inherited from PropertyInfo.) |
![]() | GetAccessors() | Returns an array whose elements reflect the public get and set accessors of the property reflected by the current instance. (Inherited from PropertyInfo.) |
![]() | GetAccessors(Boolean) | Returns an array of the public and non-public get and set accessors on this property.(Overrides PropertyInfo::GetAccessors(Boolean).) |
![]() | GetConstantValue() | Returns a literal value associated with the property by a compiler. (Inherited from PropertyInfo.) |
![]() | GetCustomAttributes(Boolean) | Returns an array of all the custom attributes for this property.(Overrides MemberInfo::GetCustomAttributes(Boolean).) |
![]() | GetCustomAttributes(Type^, Boolean) | Returns an array of custom attributes identified by Type.(Overrides MemberInfo::GetCustomAttributes(Type^, Boolean).) |
![]() | GetCustomAttributesData() | Returns a list of CustomAttributeData objects representing data about the attributes that have been applied to the target member.(Inherited from MemberInfo.) |
![]() | GetGetMethod() | Returns the public get accessor for this property.(Inherited from PropertyInfo.) |
![]() | GetGetMethod(Boolean) | Returns the public and non-public get accessor for this property.(Overrides PropertyInfo::GetGetMethod(Boolean).) |
![]() | GetHashCode() | Returns the hash code for this instance.(Inherited from PropertyInfo.) |
![]() | GetIndexParameters() | Returns an array of all the index parameters for the property.(Overrides PropertyInfo::GetIndexParameters().) |
![]() | GetOptionalCustomModifiers() | Returns an array of types representing the optional custom modifiers of the property.(Inherited from PropertyInfo.) |
![]() | GetRawConstantValue() | Returns a literal value associated with the property by a compiler. (Inherited from PropertyInfo.) |
![]() | GetRequiredCustomModifiers() | Returns an array of types representing the required custom modifiers of the property.(Inherited from PropertyInfo.) |
![]() | GetSetMethod() | Returns the public set accessor for this property.(Inherited from PropertyInfo.) |
![]() | GetSetMethod(Boolean) | Returns the set accessor for this property.(Overrides PropertyInfo::GetSetMethod(Boolean).) |
![]() | GetType() | |
![]() | GetValue(Object^) | Returns the property value of a specified object.(Inherited from PropertyInfo.) |
![]() | GetValue(Object^, BindingFlags, Binder^, array<Object^>^, CultureInfo^) | Gets the value of a property having the specified binding, index, and CultureInfo.(Overrides PropertyInfo::GetValue(Object^, BindingFlags, Binder^, array<Object^>^, CultureInfo^).) |
![]() | GetValue(Object^, array<Object^>^) | Gets the value of the indexed property by calling the property's getter method.(Overrides PropertyInfo::GetValue(Object^, array<Object^>^).) |
![]() | IsDefined(Type^, Boolean) | Indicates whether one or more instance of attributeType is defined on this property.(Overrides MemberInfo::IsDefined(Type^, Boolean).) |
![]() | SetConstant(Object^) | Sets the default value of this property. |
![]() | SetCustomAttribute(ConstructorInfo^, array<Byte>^) | Set a custom attribute using a specified custom attribute blob. |
![]() | SetCustomAttribute(CustomAttributeBuilder^) | Set a custom attribute using a custom attribute builder. |
![]() | SetGetMethod(MethodBuilder^) | Sets the method that gets the property value. |
![]() | SetSetMethod(MethodBuilder^) | Sets the method that sets the property value. |
![]() | SetValue(Object^, Object^) | Sets the property value of a specified object.(Inherited from PropertyInfo.) |
![]() | SetValue(Object^, Object^, BindingFlags, Binder^, array<Object^>^, CultureInfo^) | Sets the property value for the given object to the given value.(Overrides PropertyInfo::SetValue(Object^, Object^, BindingFlags, Binder^, array<Object^>^, CultureInfo^).) |
![]() | SetValue(Object^, Object^, array<Object^>^) | Sets the value of the property with optional index values for index properties.(Overrides PropertyInfo::SetValue(Object^, Object^, array<Object^>^).) |
![]() | ToString() | Returns a string that represents the current object.(Inherited from Object.) |
| Name | Description | |
|---|---|---|
![]() ![]() | _MemberInfo::GetIDsOfNames(Guid%, IntPtr, UInt32, UInt32, IntPtr) | Maps a set of names to a corresponding set of dispatch identifiers.(Inherited from MemberInfo.) |
![]() ![]() | _MemberInfo::GetType() | Gets a Type object representing the MemberInfo class.(Inherited from MemberInfo.) |
![]() ![]() | _MemberInfo::GetTypeInfo(UInt32, UInt32, IntPtr) | Retrieves the type information for an object, which can then be used to get the type information for an interface.(Inherited from MemberInfo.) |
![]() ![]() | _MemberInfo::GetTypeInfoCount(UInt32%) | Retrieves the number of type information interfaces that an object provides (either 0 or 1).(Inherited from MemberInfo.) |
![]() ![]() | _MemberInfo::Invoke(UInt32, Guid%, UInt32, Int16, IntPtr, IntPtr, IntPtr, IntPtr) | Provides access to properties and methods exposed by an object.(Inherited from MemberInfo.) |
![]() ![]() | _PropertyBuilder::GetIDsOfNames(Guid%, IntPtr, UInt32, UInt32, IntPtr) | Maps a set of names to a corresponding set of dispatch identifiers. |
![]() ![]() | _PropertyBuilder::GetTypeInfo(UInt32, UInt32, IntPtr) | Retrieves the type information for an object, which can then be used to get the type information for an interface. |
![]() ![]() | _PropertyBuilder::GetTypeInfoCount(UInt32%) | Retrieves the number of type information interfaces that an object provides (either 0 or 1). |
![]() ![]() | _PropertyBuilder::Invoke(UInt32, Guid%, UInt32, Int16, IntPtr, IntPtr, IntPtr, IntPtr) | Provides access to properties and methods exposed by an object. |
![]() ![]() | _PropertyInfo::GetIDsOfNames(Guid%, IntPtr, UInt32, UInt32, IntPtr) | Maps a set of names to a corresponding set of dispatch identifiers.(Inherited from PropertyInfo.) |
![]() ![]() | _PropertyInfo::GetType() | Gets a Type object representing the PropertyInfo type.(Inherited from PropertyInfo.) |
![]() ![]() | _PropertyInfo::GetTypeInfo(UInt32, UInt32, IntPtr) | Retrieves the type information for an object, which can then be used to get the type information for an interface.(Inherited from PropertyInfo.) |
![]() ![]() | _PropertyInfo::GetTypeInfoCount(UInt32%) | Retrieves the number of type information interfaces that an object provides (either 0 or 1).(Inherited from PropertyInfo.) |
![]() ![]() | _PropertyInfo::Invoke(UInt32, Guid%, UInt32, Int16, IntPtr, IntPtr, IntPtr, IntPtr) | Provides access to properties and methods exposed by an object.(Inherited from PropertyInfo.) |
| Name | Description | |
|---|---|---|
![]() | GetCustomAttribute(Type^) | Overloaded. Retrieves a custom attribute of a specified type that is applied to a specified member.(Defined by CustomAttributeExtensions.) |
![]() | GetCustomAttribute(Type^, Boolean) | Overloaded. Retrieves a custom attribute of a specified type that is applied to a specified member, and optionally inspects the ancestors of that member.(Defined by CustomAttributeExtensions.) |
![]() | GetCustomAttribute<T>() | Overloaded. Retrieves a custom attribute of a specified type that is applied to a specified member.(Defined by CustomAttributeExtensions.) |
![]() | GetCustomAttribute<T>(Boolean) | Overloaded. Retrieves a custom attribute of a specified type that is applied to a specified member, and optionally inspects the ancestors of that member.(Defined by CustomAttributeExtensions.) |
![]() | GetCustomAttributes() | Overloaded. Retrieves a collection of custom attributes that are applied to a specified member.(Defined by CustomAttributeExtensions.) |
![]() | GetCustomAttributes(Type^) | Overloaded. Retrieves a collection of custom attributes of a specified type that are applied to a specified member.(Defined by CustomAttributeExtensions.) |
![]() | GetCustomAttributes<T>(Boolean) | Overloaded. Retrieves a collection of custom attributes of a specified type that are applied to a specified member, and optionally inspects the ancestors of that member.(Defined by CustomAttributeExtensions.) |
![]() | IsDefined(Type^) | Overloaded. Indicates whether custom attributes of a specified type are applied to a specified member.(Defined by CustomAttributeExtensions.) |
A PropertyBuilder is always associated with a TypeBuilder. The TypeBuilder. DefineProperty method will return a new PropertyBuilder to a client.
The following code sample demonstrates how to implement properties in a dynamic type using a PropertyBuilder obtained via TypeBuilder::DefineProperty to create the property framework and an associated MethodBuilder to implement the IL logic within the property.
using namespace System; using namespace System::Threading; using namespace System::Reflection; using namespace System::Reflection::Emit; Type^ BuildDynamicTypeWithProperties() { AppDomain^ myDomain = Thread::GetDomain(); AssemblyName^ myAsmName = gcnew AssemblyName; myAsmName->Name = "MyDynamicAssembly"; // To generate a persistable assembly, specify AssemblyBuilderAccess::RunAndSave. AssemblyBuilder^ myAsmBuilder = myDomain->DefineDynamicAssembly( myAsmName, AssemblyBuilderAccess::RunAndSave ); // Generate a persistable single-module assembly. ModuleBuilder^ myModBuilder = myAsmBuilder->DefineDynamicModule( myAsmName->Name, myAsmName->Name + ".dll" ); TypeBuilder^ myTypeBuilder = myModBuilder->DefineType( "CustomerData", TypeAttributes::Public ); // Define a private field to hold the property value. FieldBuilder^ customerNameBldr = myTypeBuilder->DefineField( "customerName", String::typeid, FieldAttributes::Private ); // The last argument of DefineProperty is an empty array of Type // objects, because the property has no parameters. (Alternatively, // you can specify a null value.) PropertyBuilder^ custNamePropBldr = myTypeBuilder->DefineProperty( "CustomerName", PropertyAttributes::HasDefault, String::typeid, gcnew array<Type^>(0) ); // The property set and property get methods require a special // set of attributes. MethodAttributes getSetAttr = MethodAttributes::Public | MethodAttributes::SpecialName | MethodAttributes::HideBySig; // Define the "get" accessor method for CustomerName. MethodBuilder^ custNameGetPropMthdBldr = myTypeBuilder->DefineMethod( "get_CustomerName", getSetAttr, String::typeid, Type::EmptyTypes ); ILGenerator^ custNameGetIL = custNameGetPropMthdBldr->GetILGenerator(); custNameGetIL->Emit( OpCodes::Ldarg_0 ); custNameGetIL->Emit( OpCodes::Ldfld, customerNameBldr ); custNameGetIL->Emit( OpCodes::Ret ); // Define the "set" accessor method for CustomerName. array<Type^>^temp2 = {String::typeid}; MethodBuilder^ custNameSetPropMthdBldr = myTypeBuilder->DefineMethod( "set_CustomerName", getSetAttr, nullptr, temp2 ); ILGenerator^ custNameSetIL = custNameSetPropMthdBldr->GetILGenerator(); custNameSetIL->Emit( OpCodes::Ldarg_0 ); custNameSetIL->Emit( OpCodes::Ldarg_1 ); custNameSetIL->Emit( OpCodes::Stfld, customerNameBldr ); custNameSetIL->Emit( OpCodes::Ret ); // Last, we must map the two methods created above to our PropertyBuilder to // their corresponding behaviors, "get" and "set" respectively. custNamePropBldr->SetGetMethod( custNameGetPropMthdBldr ); custNamePropBldr->SetSetMethod( custNameSetPropMthdBldr ); Type^ retval = myTypeBuilder->CreateType(); // Save the assembly so it can be examined with Ildasm.exe, // or referenced by a test program. myAsmBuilder->Save(myAsmName->Name + ".dll"); return retval; } int main() { Type^ custDataType = BuildDynamicTypeWithProperties(); array<PropertyInfo^>^custDataPropInfo = custDataType->GetProperties(); System::Collections::IEnumerator^ myEnum = custDataPropInfo->GetEnumerator(); while ( myEnum->MoveNext() ) { PropertyInfo^ pInfo = safe_cast<PropertyInfo^>(myEnum->Current); Console::WriteLine( "Property '{0}' created!", pInfo ); } Console::WriteLine( "---" ); // Note that when invoking a property, you need to use the proper BindingFlags - // BindingFlags::SetProperty when you invoke the "set" behavior, and // BindingFlags::GetProperty when you invoke the "get" behavior. Also note that // we invoke them based on the name we gave the property, as expected, and not // the name of the methods we bound to the specific property behaviors. Object^ custData = Activator::CreateInstance( custDataType ); array<Object^>^temp3 = {"Joe User"}; custDataType->InvokeMember( "CustomerName", BindingFlags::SetProperty, nullptr, custData, temp3 ); Console::WriteLine( "The customerName field of instance custData has been set to '{0}'.", custDataType->InvokeMember( "CustomerName", BindingFlags::GetProperty, nullptr, custData, gcnew array<Object^>(0) ) ); } // --- O U T P U T --- // The output should be as follows: // ------------------- // Property 'System.String CustomerName [System.String]' created! // --- // The customerName field of instance custData has been set to 'Joe User'. // -------------------
Available since 1.1
Silverlight
Available since 2.0
Any public static ( Shared in Visual Basic) members of this type are thread safe. Any instance members are not guaranteed to be thread safe.



