Wenn ich eine C# -Klasse haben MyClass
wie folgt:Wie lese ich die internen Eigenschaften einer C# -Klasse? geschützt? geschützt intern?
using System.Diagnostics;
namespace ConsoleApplication1
{
class MyClass
{
public int pPublic {get;set;}
private int pPrivate {get;set;}
internal int pInternal {get;set;}
}
class Program
{
static void Main(string[] args)
{
Debug.Assert(typeof(MyClass).GetProperties(
System.Reflection.BindingFlags.Public |
System.Reflection.BindingFlags.Instance).Length == 1);
Debug.Assert(typeof(MyClass).GetProperties(
System.Reflection.BindingFlags.NonPublic |
System.Reflection.BindingFlags.Instance).Length == 2);
// internal?
// protected?
// protected internal?
}
}
}
Der obige Code compiliert läuft ohne Assertionsfehler sind. NonPublic gibt die internen und privaten Eigenschaften zurück. Es scheint keine Flags für die anderen Accessibility-Typen unter BindingFlags zu geben.
Wie bekomme ich eine Liste/Array von nur die Eigenschaften, die intern sind? Auf eine verwandte Anmerkung, aber nicht notwendig für meine Anwendung, was ist geschützt oder geschützt intern?
Eine andere Option wäre, propertyInfo.GetGetMethod (true) aufzurufen. d. h. propertyInfo.GetGetMethod (true) .IsPrivate. Beachten Sie auch, dass ich GetProperties wie folgt aufrufen musste, damit es funktioniert GetProperties (BindingFlags.NonPublic | BindingFlags.Instance); GetProperties (BindingFlags.NonPublic) an sich hat nicht funktioniert – cgotberg
@cgotberg Ja, ich habe meine Antwort bearbeitet, um 'true' Parameter zu verwenden. Sonst gibt es Ihnen nicht die nicht-öffentlichen Accessoren. Vielen Dank. –