C#通常将KeyValuePair与不同的值类型一起使用

时间:2018-10-01 21:06:30

标签: c# dictionary reflection keyvaluepair

我正在使用反射遍历一个可枚举的对象,并收集某个接口类型的所有数据。

在对象是字典的情况下,我还想对字符串键“名称”进行某些操作。

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没有实现我可以使用的任何接口。

0 个答案:

没有答案