我有一个不同类型的对象列表,我需要根据它们的类型做不同的事情。具体来说,两种类型共享一种方法,我想用它们中的任何一种。我目前正在尝试的是:
if (foo is Type01 || foo is Type02) {
Type tempType = foo.GetType();
outList.Add((foo as tempType).ToOutType());
return outList;
}
然而,这并不起作用,因为编译器显然不能动态地使用Type。有没有办法实现这一点,还是我必须将两个选项放在不同的if子句中?
答案 0 :(得分:2)
如果您同时控制Type01
和Type02
,则需要救援接口:
interface ISupportToOutType
{
OutType ToOutType();
}
class Type01 : ISupportToOutType
{
}
class Type02 : ISupportToOutType
{
}
var toOutType = foo as ISupportToOutType;
if(toOutType != null)
{
outList.Add(toOutType.ToOutType());
}