如何获取实例化对象的类型并使用它在C#中强制转换不同的对象?
我试图将基础对象强制转换为派生对象 像这样:如何获取实例化对象的类型并使用它在C#中强制转换不同的对象?,c#,.net,casting,polymorphism,C#,.net,Casting,Polymorphism,我试图将基础对象强制转换为派生对象 像这样: DerivedClass castedBaseObject = (randomDerivedObject.GetType())originalBaseObject; 上面的示例不起作用,抛出以下错误:error CS1003:Syntax error',“expected如果您有有限的类型(让我们称它们为MyClass1、MyClass2、…、MyClassN),并且您知道您的对象originalBaseObject具有其中一种类型,您可以执行以下
DerivedClass castedBaseObject = (randomDerivedObject.GetType())originalBaseObject;
上面的示例不起作用,抛出以下错误:
error CS1003:Syntax error',“expected
如果您有有限的类型(让我们称它们为MyClass1、MyClass2、…、MyClassN
),并且您知道您的对象originalBaseObject
具有其中一种类型,您可以执行以下操作:
if (originalBaseObject is MyClass1 tmp1)
{
// do something with tmp1
}
else if (originalBaseObject is MyClass2 tmp2)
{
// do something with tmp2
}
// ...
// and the last type
else if (originalBaseObject is MyClassN tmpN)
{
// do something with tmpN
}
else {
throw new Exception("Non of the given types");
}
你能提供更多的上下文来解释你为什么想要实现这个目标吗?@Bijington很长,基本上我正在使用一个API并试图围绕已经定义的类包装一个类,当使用已经定义的方法时,它们返回基类(type),所以为了使用我编写的包装器(这花了我很多时间)我必须投下基础对象。我使用了很多不同的包装器类,所以我想进行动态迭代和强制转换。如果您在编译时对类型一无所知,那么使用
var
关键字是不可能的,因为它需要静态类型。但是,您可以使用动态
关键字。有关转换,请参阅答案,例如和@xaver抱歉,修复了它。