如何测试反射字段的类型是否为指定类型或从指定类型继承
本文关键字:类型 是否 继承 何测试 测试 字段 反射 | 更新日期: 2023-09-27 18:18:43
我正在迭代一个类的FieldInfo
。我希望能够测试给定字段是否属于某种类型。
具体问题是我想知道从SortedList
派生的所有字段。所以它们不完全是SortedList
,但每个都是SortedList
。给定字段的FieldInfo
,我如何测试这一点?
您可以使用IsAssignableFrom
方法执行此测试,如下所示:
var isSortedList = typeof(SortedList).IsAssignableFrom(fieldInfo.FieldType);
除了将SortedList作为类型查找之外,还可以查找SortedList派生的接口,如IDictionary、ICollection。我在我的博客上提供了一个有趣的阅读,它给出了一个接口反射的例子:
反映c#中未知程序集的接口
HTH(你南边的HR;-))
if ((fieldInfo.FieldType == typeof(SortedList)) || fieldInfo.FieldType.IsSubclassOf(typeof(SortedList))
Console.WriteLine("Field {0} is of type {1}", fieldInfo.Name, typeof(blah.Name));
此代码未经测试,但大致是我以前使用过的。
bool canCast = (fieldInfo.FieldType == typeof(SortedList) ||
(fieldInfo.FieldType.IsSubclassOf(typeof(SortedList)));