簡體   English   中英

如何獲取屬性基於某種類型的類的所有屬性

[英]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 開始可用,因此對於早期版本使用IsAssignableFromtypeof(MyBase).IsAssignableFrom(pi.PropertyType)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM