如何使用已知的Type对象强制转换对象?

时间:2018-06-14 14:39:24

标签: c# casting

我有一个Type变量,我需要向它投射另一个对象。 (一个我知道类型是什么,但目前它是一个“对象”类型)。我需要这样做是出于对答案不重要的原因。

// Pseudocode
MyObjectClass myTypedVar = new MyObjectClass();

Type myKnownType = myTypedVar.GetType();

var anotherObject = (myKnownType) anObjectVarThatIsReallyMyObjectClass;

我已阅读此页Type Casting an Object using a "Type" Object in C#并且我理解,但我不认为它直接适用。我期待使用反射的解决方案,但我自己无法弄明白。

1 个答案:

答案 0 :(得分:3)

如果我理解正确,您可以使用Convert.ChangeType方法:

var anotherObject = Convert.ChangeType(anObjectVarThatIsReallyMyObjectClass, myKnownType);

虽然使用这样的动态类型时不会进行任何类型的编译时检查。有关此内容的更多信息,请参阅以下博客文章。

C#中的通用类型参数和动态类型: https://blog.magnusmontin.net/2014/10/31/generic-type-parameters-and-dynamic-types-in-csharp/