我有一个Type变量,我需要向它投射另一个对象。 (一个我知道类型是什么,但目前它是一个“对象”类型)。我需要这样做是出于对答案不重要的原因。
// Pseudocode
MyObjectClass myTypedVar = new MyObjectClass();
Type myKnownType = myTypedVar.GetType();
var anotherObject = (myKnownType) anObjectVarThatIsReallyMyObjectClass;
我已阅读此页Type Casting an Object using a "Type" Object in C#并且我理解,但我不认为它直接适用。我期待使用反射的解决方案,但我自己无法弄明白。
答案 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/