[英]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.