C# 使用反射动态转换对象
我有一个不同类型的对象列表,根据它们的类型,我需要对它们执行不同的操作。具体地说,其中两种类型共享一个方法,我想对它们中的任何一种使用该方法。我目前正在尝试的是:C# 使用反射动态转换对象,c#,reflection,C#,Reflection,我有一个不同类型的对象列表,根据它们的类型,我需要对它们执行不同的操作。具体地说,其中两种类型共享一个方法,我想对它们中的任何一种使用该方法。我目前正在尝试的是: if (foo is Type01 || foo is Type02) { Type tempType = foo.GetType(); outList.Add((foo as tempType).ToOutType()); return outList; } 但是,这不起作用,因为编译器显然无法动态使用该类
if (foo is Type01 || foo is Type02) {
Type tempType = foo.GetType();
outList.Add((foo as tempType).ToOutType());
return outList;
}
但是,这不起作用,因为编译器显然无法动态使用该类型。有没有办法实现这一点,或者我必须将这两个选项放在不同的if子句中?如果您同时控制
Type01
和Type02
,则要救援的接口:
interface ISupportToOutType
{
OutType ToOutType();
}
class Type01 : ISupportToOutType
{
}
class Type02 : ISupportToOutType
{
}
var toOutType = foo as ISupportToOutType;
if(toOutType != null)
{
outList.Add(toOutType.ToOutType());
}
如果同时控制
Type01
和Type02
,则救援界面:
interface ISupportToOutType
{
OutType ToOutType();
}
class Type01 : ISupportToOutType
{
}
class Type02 : ISupportToOutType
{
}
var toOutType = foo as ISupportToOutType;
if(toOutType != null)
{
outList.Add(toOutType.ToOutType());
}
尝试使用Activator该方法对这两种类型执行相同的操作吗?您能否从具有此方法(至少作为虚拟方法)的公共基中对类型进行子类化?或者将该方法放在两个类都实现的接口中?尝试使用Activator该方法在两种类型上做相同的事情吗?您能否从具有此方法(至少作为虚拟方法)的公共基中对类型进行子类化?或者将方法放在两个类都实现的接口中?