Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何获取实例化对象的类型并使用它在C#中强制转换不同的对象?_C#_.net_Casting_Polymorphism - Fatal编程技术网

如何获取实例化对象的类型并使用它在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抱歉,修复了它。