Wie um zu überprüfen, ob eine Eigenschaft mit virtuellen Spiegelbild?
Gegeben ein Objekt, wie kann ich feststellen, ob das Objekt virtuelle Eigenschaften?
var entity = repository.GetByID(entityId);
Ich habe versucht, suchen in:
PropertyInfo[] properties = entity.GetType().GetProperties();
Konnte aber nicht erkennen, wenn einer der Eigenschaften, die darauf hindeuten würde, virtuellen.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Oder, für .NET 4 und unten:
Wird, erhalten Sie eine Liste der public virtual Eigenschaften.
Funktioniert es nicht für nur-schreiben-Eigenschaften. Wenn es muss, können Sie überprüfen
CanRead
undCanWrite
manuell, und Lesen Sie die entsprechende Methode.Beispiel:
Könnte man auch einfach schnappen die ersten accessor:
(p.CanRead ? p.GetGetMethod(true) : p.GetSetMethod(true)).IsVirtual;
Prüfung nur
IsVirtual
des property-accessor wird Ihnen auch interface-Eigenschaften, die nicht deklariertvirtual
in Ihrer Klasse. Wenn von "virtuellen " Eigenschaften" Sie meinen Eigenschaften, können Sie die überschreibung in abgeleiteter Klasse, die Sie sollten auch prüfenIsFinal
(versiegelt):Überprüfen Sie diese Beispiel-app:
Sehen diese Antwort.
isVirtual
aber die KombinationisFinal
prüfen Sie Tat es für mich.versuchen mit
Verwenden Sie die GetAccessors Methode, zum Beispiel für die erste Eigenschaft:
Get-accessor:
Set-accessor:
Dies ist ein wenig schwierig, denn eine Eigenschaft kann nur gelesen werden, schreib-oder lese - /Schreibzugriff. Daher müssen Sie überprüfen sowohl die zugrunde liegenden Methoden für virtuelle, wie diese: