PropertyInfo[] properties = entity.GetType().GetProperties()
.Where(p => p.GetMethod.IsVirtual).ToArray();
Oder für .NET 4 und unten:
PropertyInfo[] properties = entity.GetType().GetProperties()
.Where(p => p.GetGetMethod().IsVirtual).ToArray();
, die eine Liste der öffentlichen virtuellen bekommen Eigenschaften.
Es funktioniert nicht für schreibgeschützte Eigenschaften. Wenn es erforderlich ist, können Sie CanRead
und CanWrite
manuell überprüfen und die entsprechende Methode lesen.
Zum Beispiel:
PropertyInfo[] properties = entity.GetType().GetProperties()
.Where(p => (p.CanRead ? p.GetMethod : p.SetMethod).IsVirtual).ToArray();
Sie könnten auch einfach an die erste Accessor:
PropertyInfo[] properties = entity.GetType().GetProperties()
.Where(p => p.GetAccessors()[0].IsVirtual).ToArray();
Um sicher privaten Eigenschaften handhaben Sie tun können: '(p.CanRead p.GetGetMethod (true): p.GetSetMethod (true)). IsVirtual;' –