繁体   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