(0) exportieren Drucken
Alle erweitern
Dieser Artikel wurde maschinell übersetzt. Bewegen Sie den Mauszeiger über die Sätze im Artikel, um den Originaltext anzuzeigen. Weitere Informationen
Übersetzung
Original

PropertyBuilder-Klasse

Definiert die Eigenschaften für einen Typ.

System.Object
  System.Reflection.MemberInfo
    System.Reflection.PropertyInfo
      System.Reflection.Emit.PropertyBuilder

Namespace:  System.Reflection.Emit
Assembly:  mscorlib (in mscorlib.dll)

[ClassInterfaceAttribute(ClassInterfaceType.None)]
[ComVisibleAttribute(true)]
[HostProtectionAttribute(SecurityAction.LinkDemand, MayLeakOnAbort = true)]
public sealed class PropertyBuilder : PropertyInfo, 
	_PropertyBuilder

Der PropertyBuilder-Typ macht die folgenden Member verfügbar.

  NameBeschreibung
Öffentliche EigenschaftAttributesRuft die Attribute für diese Eigenschaft ab. (Überschreibt PropertyInfo.Attributes.)
Öffentliche EigenschaftCanReadRuft einen Wert ab, der angibt, ob die Eigenschaft gelesen werden kann. (Überschreibt PropertyInfo.CanRead.)
Öffentliche EigenschaftCanWriteRuft einen Wert ab, der angibt, ob in die Eigenschaft geschrieben werden kann. (Überschreibt PropertyInfo.CanWrite.)
Öffentliche EigenschaftCustomAttributesRuft eine Sammlung ab, die die benutzerdefinierten Attribute dieses Members enthält. (Von MemberInfo geerbt.)
Öffentliche EigenschaftDeclaringTypeRuft die Klasse ab, die diesen Member deklariert. (Überschreibt MemberInfo.DeclaringType.)
Öffentliche EigenschaftGetMethodRuft den get-Accessor für diese Eigenschaft ab. (Von PropertyInfo geerbt.)
Öffentliche EigenschaftIsSpecialNameRuft einen Wert ab, der angibt, ob es sich bei der Eigenschaft um den besonderen Namen handelt. (Von PropertyInfo geerbt.)
Öffentliche EigenschaftMemberTypeRuft einen MemberTypes-Wert ab, der angibt, dass dieser Member eine Eigenschaft ist. (Von PropertyInfo geerbt.)
Öffentliche EigenschaftMetadataTokenRuft einen Wert ab, der ein Metadatenelement identifiziert. (Von MemberInfo geerbt.)
Öffentliche EigenschaftModuleRuft das Modul ab, in dem der Typ definiert wird, der die aktuelle Eigenschaft deklariert. (Überschreibt MemberInfo.Module.)
Öffentliche EigenschaftNameRuft den Namen dieses Members ab. (Überschreibt MemberInfo.Name.)
Öffentliche EigenschaftPropertyTokenRuft das Token für diese Eigenschaft ab.
Öffentliche EigenschaftPropertyTypeRuft den Typ des Felds für diese Eigenschaft ab. (Überschreibt PropertyInfo.PropertyType.)
Öffentliche EigenschaftReflectedTypeRuft das Klassenobjekt ab, mit dem diese Instanz von MemberInfo abgerufen wurde. (Überschreibt MemberInfo.ReflectedType.)
Öffentliche EigenschaftSetMethodRuft den set-Accessor für diese Eigenschaft ab. (Von PropertyInfo geerbt.)
Zum Seitenanfang

  NameBeschreibung
Öffentliche MethodeAddOtherMethodFügt eine der anderen Methoden hinzu, die dieser Eigenschaft zugeordnet sind.
Öffentliche MethodeEqualsGibt einen Wert zurück, der angibt, ob diese Instanz gleich einem angegebenen Objekt ist. (Von PropertyInfo geerbt.)
Öffentliche MethodeGetAccessors()Gibt ein Array zurück, dessen Elemente den öffentlichen get-Accessor, set-Accessor und andere Accessoren der Eigenschaft reflektieren, die von der aktuellen Instanz reflektiert wird. (Von PropertyInfo geerbt.)
Öffentliche MethodeGetAccessors(Boolean)Gibt ein Array der öffentlichen und nicht öffentlichen get-Accessoren und set-Accessoren für diese Eigenschaft zurück. (Überschreibt PropertyInfo.GetAccessors(Boolean).)
Öffentliche MethodeGetConstantValueGibt einen literalen Wert zurück, der der Eigenschaft von einem Compiler zugeordnet wurde. (Von PropertyInfo geerbt.)
Öffentliche MethodeGetCustomAttributes(Boolean)Gibt ein Array aller benutzerdefinierten Attribute für diese Eigenschaft zurück. (Überschreibt MemberInfo.GetCustomAttributes(Boolean).)
Öffentliche MethodeGetCustomAttributes(Type, Boolean)Gibt ein Array benutzerdefinierter Attribute zurück, die durch Type bezeichnet werden. (Überschreibt MemberInfo.GetCustomAttributes(Type, Boolean).)
Öffentliche MethodeGetCustomAttributesDataGibt eine Liste von CustomAttributeData-Objekten zurück, die Daten über die für das Ziel übernommenen Attribute darstellen. (Von MemberInfo geerbt.)
Öffentliche MethodeGetGetMethod()Gibt den öffentlichen get-Accessor für diese Eigenschaft zurück. (Von PropertyInfo geerbt.)
Öffentliche MethodeGetGetMethod(Boolean)Gibt den öffentlichen und nicht öffentlichen Get-Accessor für diese Eigenschaft zurück. (Überschreibt PropertyInfo.GetGetMethod(Boolean).)
Öffentliche MethodeGetHashCodeGibt den Hashcode für diese Instanz zurück. (Von PropertyInfo geerbt.)
Öffentliche MethodeGetIndexParametersGibt ein Array aller Indexparameter für diese Eigenschaft zurück. (Überschreibt PropertyInfo.GetIndexParameters().)
Öffentliche MethodeGetOptionalCustomModifiersGibt ein Array von Typen zurück, die die optionalen benutzerdefinierten Modifizierer der Eigenschaft darstellen. (Von PropertyInfo geerbt.)
Öffentliche MethodeGetRawConstantValueGibt einen literalen Wert zurück, der der Eigenschaft von einem Compiler zugeordnet wurde. (Von PropertyInfo geerbt.)
Öffentliche MethodeGetRequiredCustomModifiersGibt ein Array von Typen zurück, die die erforderlichen benutzerdefinierten Modifizierer der Eigenschaft darstellen. (Von PropertyInfo geerbt.)
Öffentliche MethodeGetSetMethod()Gibt den öffentlichen set-Accessor für diese Eigenschaft zurück. (Von PropertyInfo geerbt.)
Öffentliche MethodeGetSetMethod(Boolean)Gibt den Set-Accessor für diese Eigenschaft zurück. (Überschreibt PropertyInfo.GetSetMethod(Boolean).)
Öffentliche MethodeGetTypeRuft den Type der aktuellen Instanz ab. (Von Object geerbt.)
Öffentliche MethodeGetValue(Object)Gibt den Eigenschaftswert eines angegebenen Objekts zurück. (Von PropertyInfo geerbt.)
Öffentliche MethodeGetValue(Object, Object[])Ruft durch Aufrufen der Get-Methode der Eigenschaft den Wert der indizierten Eigenschaft ab. (Überschreibt PropertyInfo.GetValue(Object, Object[]).)
Öffentliche MethodeGetValue(Object, BindingFlags, Binder, Object[], CultureInfo)Ruft den Wert einer Eigenschaft mit den Angaben für Bindung, Index und CultureInfo ab. (Überschreibt PropertyInfo.GetValue(Object, BindingFlags, Binder, Object[], CultureInfo).)
Öffentliche MethodeIsDefinedGibt an, ob für diese Eigenschaft eine oder mehrere Instanzen von attributeType definiert sind. (Überschreibt MemberInfo.IsDefined(Type, Boolean).)
Öffentliche MethodeSetConstantLegt den Standardwert dieser Eigenschaft fest.
Öffentliche MethodeSetCustomAttribute(CustomAttributeBuilder)Legt ein benutzerdefiniertes Attribut mit einem Generator für benutzerdefinierte Attribute fest.
Öffentliche MethodeSetCustomAttribute(ConstructorInfo, Byte[])Legt ein benutzerdefiniertes Attribut mithilfe eines angegebenen BLOBs für benutzerdefinierte Attribute fest.
Öffentliche MethodeSetGetMethodLegt die Methode fest, die den Eigenschaftswert abruft.
Öffentliche MethodeSetSetMethodLegt die Methode zum Festlegen des Eigenschaftswerts fest.
Öffentliche MethodeSetValue(Object, Object)Legt den Eigenschaftswert des angegebenen Objekts fest. (Von PropertyInfo geerbt.)
Öffentliche MethodeSetValue(Object, Object, Object[])Legt den Wert der Eigenschaft mit optionalen Indexwerten für Indexeigenschaften fest. (Überschreibt PropertyInfo.SetValue(Object, Object, Object[]).)
Öffentliche MethodeSetValue(Object, Object, BindingFlags, Binder, Object[], CultureInfo)Legt den Eigenschaftswert für das angegebene Objekt auf den angegebenen Wert fest. (Überschreibt PropertyInfo.SetValue(Object, Object, BindingFlags, Binder, Object[], CultureInfo).)
Öffentliche MethodeToStringGibt eine Zeichenfolge zurück, die das aktuelle Objekt darstellt. (Von Object geerbt.)
Zum Seitenanfang

  NameBeschreibung
Öffentliche ErweiterungsmethodeGetCustomAttribute(Type)Überladen. Ruft ein benutzerdefiniertes Attribut eines angegebenen Typs ab, der für einen angegebenen Member angewendet wird. (Durch CustomAttributeExtensions definiert.)
Öffentliche ErweiterungsmethodeGetCustomAttribute(Type, Boolean)Überladen. Ruft ein benutzerdefiniertes Attribut eines angegebenen Typs ab, der für einen angegebenen Member angewendet wird, und überprüft optional die Vorgänger dieses Members. (Durch CustomAttributeExtensions definiert.)
Öffentliche ErweiterungsmethodeGetCustomAttribute<T>()Überladen. Ruft ein benutzerdefiniertes Attribut eines angegebenen Typs ab, der für einen angegebenen Member angewendet wird. (Durch CustomAttributeExtensions definiert.)
Öffentliche ErweiterungsmethodeGetCustomAttribute<T>(Boolean)Überladen. Ruft ein benutzerdefiniertes Attribut eines angegebenen Typs ab, der für einen angegebenen Member angewendet wird, und überprüft optional die Vorgänger dieses Members. (Durch CustomAttributeExtensions definiert.)
Öffentliche ErweiterungsmethodeGetCustomAttributes()Überladen. Ruft eine Auflistung benutzerdefinierter Attribute ab, die für einen angegebenen Member angewendet werden. (Durch CustomAttributeExtensions definiert.)
Öffentliche ErweiterungsmethodeGetCustomAttributes(Type)Überladen. Ruft eine Auflistung benutzerdefinierter Attribute eines angegebenen Typs ab, die für eine angegebenen Member angewendet werden. (Durch CustomAttributeExtensions definiert.)
Öffentliche ErweiterungsmethodeGetCustomAttributes<T>()Überladen. Ruft eine Auflistung benutzerdefinierter Attribute eines angegebenen Typs ab, die für eine angegebenen Member angewendet werden. (Durch CustomAttributeExtensions definiert.)
Öffentliche ErweiterungsmethodeGetCustomAttributes<T>(Boolean)Überladen. Ruft eine Auflistung benutzerdefinierter Attribute eines angegebenen Typs ab, die für einen angegebenen Member angewendet werden, und überprüft optional die Vorgänger dieses Members. (Durch CustomAttributeExtensions definiert.)
Öffentliche ErweiterungsmethodeIsDefinedGibt an, ob irgend welche benutzerdefinierten Attribute eines bestimmten Typs auf eines angegebenen Members angewendet werden. (Durch CustomAttributeExtensions definiert.)
Zum Seitenanfang

  NameBeschreibung
Explizite SchnittstellenimplementierungPrivate Methode_MemberInfo.GetIDsOfNamesOrdnet eine Reihe von Namen einer entsprechenden Reihe von Dispatchbezeichnern zu. (Von MemberInfo geerbt.)
Explizite SchnittstellenimplementierungPrivate Methode_MemberInfo.GetTypeRuft ein Type-Objekt ab, das die MemberInfo-Klasse darstellt. (Von MemberInfo geerbt.)
Explizite SchnittstellenimplementierungPrivate Methode_MemberInfo.GetTypeInfoRuft die Typinformationen für ein Objekt ab, die dann zum Abrufen der Typinformationen für eine Schnittstelle verwendet werden können. (Von MemberInfo geerbt.)
Explizite SchnittstellenimplementierungPrivate Methode_MemberInfo.GetTypeInfoCountRuft die Anzahl der Schnittstellen mit Typinformationen ab, die von einem Objekt bereitgestellt werden (0 oder 1). (Von MemberInfo geerbt.)
Explizite SchnittstellenimplementierungPrivate Methode_MemberInfo.InvokeStellt den Zugriff auf von einem Objekt verfügbar gemachte Eigenschaften und Methoden bereit. (Von MemberInfo geerbt.)
Explizite SchnittstellenimplementierungPrivate Methode_PropertyBuilder.GetIDsOfNamesOrdnet eine Reihe von Namen einer entsprechenden Reihe von Dispatchbezeichnern zu.
Explizite SchnittstellenimplementierungPrivate Methode_PropertyBuilder.GetTypeInfoRuft die Typinformationen für ein Objekt ab, die dann zum Abrufen der Typinformationen für eine Schnittstelle verwendet werden können.
Explizite SchnittstellenimplementierungPrivate Methode_PropertyBuilder.GetTypeInfoCountRuft die Anzahl der Schnittstellen mit Typinformationen ab, die von einem Objekt bereitgestellt werden (0 oder 1).
Explizite SchnittstellenimplementierungPrivate Methode_PropertyBuilder.InvokeStellt den Zugriff auf von einem Objekt verfügbar gemachte Eigenschaften und Methoden bereit.
Explizite SchnittstellenimplementierungPrivate Methode_PropertyInfo.GetIDsOfNamesOrdnet eine Reihe von Namen einer entsprechenden Reihe von Dispatchbezeichnern zu. (Von PropertyInfo geerbt.)
Explizite SchnittstellenimplementierungPrivate Methode_PropertyInfo.GetTypeRuft ein Type-Objekt ab, das den PropertyInfo-Typ darstellt. (Von PropertyInfo geerbt.)
Explizite SchnittstellenimplementierungPrivate Methode_PropertyInfo.GetTypeInfoRuft die Typinformationen für ein Objekt ab, die dann zum Abrufen der Typinformationen für eine Schnittstelle verwendet werden können. (Von PropertyInfo geerbt.)
Explizite SchnittstellenimplementierungPrivate Methode_PropertyInfo.GetTypeInfoCountRuft die Anzahl der Schnittstellen mit Typinformationen ab, die von einem Objekt bereitgestellt werden (0 oder 1). (Von PropertyInfo geerbt.)
Explizite SchnittstellenimplementierungPrivate Methode_PropertyInfo.InvokeStellt den Zugriff auf von einem Objekt verfügbar gemachte Eigenschaften und Methoden bereit. (Von PropertyInfo geerbt.)
Zum Seitenanfang

Ein PropertyBuilder ist immer einem TypeBuilder zugeordnet. TypeBuilder . Die DefineProperty-Methode gibt einen neuen PropertyBuilder an einen Client zurück.

HinweisHinweis

Das auf diesen Typ oder Member angewendete HostProtectionAttribute-Attribut besitzt den folgenden Resources-Eigenschaftswert: MayLeakOnAbort. Das HostProtectionAttribute hat keine Auswirkungen auf Desktopanwendungen (die normalerweise durch Doppelklicken auf ein Symbol, Eingeben eines Befehls oder einer URL in einem Browser gestartet werden). Weitere Informationen finden Sie unter der HostProtectionAttribute-Klasse oder unter SQL Server-Programmierung und Hostschutzattribute.

Das folgende Codebeispiel veranschaulicht die Implementierung von Eigenschaften in einem dynamischen Typ mit einem über TypeBuilder.DefineProperty abgerufenen PropertyBuilder zum Erstellen des Eigenschaftenframeworks und einem zugeordneten MethodBuilder zum Implementieren der IL-Logik innerhalb der Eigenschaft.



using System;
using System.Threading;
using System.Reflection;
using System.Reflection.Emit;

class PropertyBuilderDemo

{

   public static Type BuildDynamicTypeWithProperties() 
   {
        AppDomain myDomain = Thread.GetDomain();
        AssemblyName myAsmName = new 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);

        FieldBuilder customerNameBldr = myTypeBuilder.DefineField("customerName",
                                                        typeof(string),
                                                        FieldAttributes.Private);

        // The last argument of DefineProperty is null, because the
        // property has no parameters. (If you don't specify null, you must
        // specify an array of Type objects. For a parameterless property,
        // use an array with no elements: new Type[] {})
        PropertyBuilder custNamePropBldr = myTypeBuilder.DefineProperty("CustomerName",
                                                         PropertyAttributes.HasDefault,
                                                         typeof(string),
                                                         null);

        // 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,        
                                       typeof(string),
                                       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.
        MethodBuilder custNameSetPropMthdBldr = 
            myTypeBuilder.DefineMethod("set_CustomerName",
                                       getSetAttr,     
                                       null,
                                       new Type[] { typeof(string) });

        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;
   }

   public static void Main() 
   {
        Type custDataType = BuildDynamicTypeWithProperties();

        PropertyInfo[] custDataPropInfo = custDataType.GetProperties();
        foreach (PropertyInfo pInfo in custDataPropInfo) {
           Console.WriteLine("Property '{0}' created!", pInfo.ToString());
        }

        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);
        custDataType.InvokeMember("CustomerName", BindingFlags.SetProperty,
                                      null, custData, new object[]{ "Joe User" });

        Console.WriteLine("The customerName field of instance custData has been set to '{0}'.",
                           custDataType.InvokeMember("CustomerName", BindingFlags.GetProperty,
                                                      null, custData, new object[]{ }));
   }

}

// --- 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'.
// -------------------



.NET Framework

Unterstützt in: 4.5.2, 4.5.1, 4.5, 4, 3.5, 3.0, 2.0, 1.1, 1.0

.NET Framework Client Profile

Unterstützt in: 4, 3.5 SP1

Windows Phone 8.1, Windows Phone 8, Windows 8.1, Windows Server 2012 R2, Windows 8, Windows Server 2012, Windows 7, Windows Vista SP2, Windows Server 2008 (Server Core-Rolle wird nicht unterstützt), Windows Server 2008 R2 (Server Core-Rolle wird mit SP1 oder höher unterstützt; Itanium wird nicht unterstützt)

.NET Framework unterstützt nicht alle Versionen sämtlicher Plattformen. Eine Liste der unterstützten Versionen finden Sie unter Systemanforderungen für .NET Framework.

Alle öffentlichen static (Shared in Visual Basic)-Member dieses Typs sind threadsicher. Bei Instanzmembern ist die Threadsicherheit nicht gewährleistet.

Community-Beiträge

HINZUFÜGEN
Anzeigen:
© 2014 Microsoft