我正在迭代一个类的FieldInfo
。我希望能够测试给定字段是否属于某种类型。
具体问题是我想知道从SortedList
派生的所有字段。所以它们不完全是SortedList
,但每一个都是SortedList
。
给定字段FieldInfo
,我该如何测试?
答案 0 :(得分:9)
您可以使用IsAssignableFrom
方法执行此测试,如下所示:
var isSortedList = typeof(SortedList).IsAssignableFrom(fieldInfo.FieldType);
答案 1 :(得分:0)
bool canCast = (fieldInfo.FieldType == typeof(SortedList) ||
(fieldInfo.FieldType.IsSubclassOf(typeof(SortedList)));
答案 2 :(得分:0)
if ((fieldInfo.FieldType == typeof(SortedList)) || fieldInfo.FieldType.IsSubclassOf(typeof(SortedList))
Console.WriteLine("Field {0} is of type {1}", fieldInfo.Name, typeof(blah.Name));
此代码未经测试,但大致是我之前使用过的。
答案 3 :(得分:0)
您可以查找SortedList派生的IDictionary,ICollection等接口,而不是查找SortedList作为类型。我在我的博客上提供了一个有趣的读物,它给出了一个反映界面的例子:
Reflect Interface from Unknown Assembly in C#
HTH(来自你以南的HR ;-))