我正在使用反射遍历一个可枚举的对象,并收集某个接口类型的所有数据。
在对象是字典的情况下,我还想对字符串键“名称”进行某些操作。
public interface IDisplayable
{
}
...
foreach (var item in enumerable)
{
var itemType = item.GetType();
if (item is KeyValuePair<string, IDisplayable> keyValue)
{
string name = keyValue.Key;
///do something with the name here
}
var displayableDatas = itemType.GetProperties().Select(x => x.GetValue(item)).OfType<IDisplayable>();
///do something with all collected interfaces
}
我面临的问题是,即使对象的接口类型为IDisplayable,也永远不会输入if语句。
如果我直接放入扩展接口的类,它确实可以工作。
什么是好的解决方法?
令人讨厌的事情是KeyValuePair没有实现我可以使用的任何接口。