[英]How to get all properties of a class where the property is based on a certain type
在 C# 中,我有一個帶有屬性的類。
public class MyClass
{
public MyPropClass1 Prop1 { get; set; }
public MyPropClass2 Prop2 { get; set; }
public AnotherClassAltogether Prop3 {get; set; }
}
假設 MyPropClass1 和 MyPropClass2 都從 MyPropBaseClass 繼承,但 AnotherClassAltogether 沒有。
從 MyClass 獲取所有屬性的最簡單方法是什么?
例如,如果我想根據 MyPropBaseClass 查詢 MyClass 的屬性,那么它應該返回 Prop1 和 Prop2
您需要獲取所有屬性,然后使用PropertyInfo.PropertyType
查找從目標類型繼承的PropertyInfo.PropertyType
,您可以為此使用Type.IsAssignableTo
:
var props = typeof(MyClass)
.GetProperties()
.Where(pi => pi.PropertyType.IsAssignableTo(typeof(MyPropBaseClass)))
.ToList();
IsAssignableTo
從 .NET 5 開始可用,因此對於早期版本使用IsAssignableFrom
: typeof(MyBase).IsAssignableFrom(pi.PropertyType)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.