首页 > 解决方案 > 如何获取实例化对象的类型并使用它在 C# 中强制转换不同的对象?

问题描述

我正在尝试将基础对象转换为派生对象。

像这样:

DerivedClass castedBaseObject = (randomDerivedObject.GetType())originalBaseObject;

上面的例子不起作用,抛出以下错误:error CS1003: Syntax error, ',' expected

标签: c#.netcastingpolymorphism

解决方案


如果您有有限数量的类型(我们称之为它们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");
}

推荐阅读