【问题标题】:How can I cast an object using a known Type object? [duplicate]如何使用已知的 Type 对象转换对象? [复制]
【发布时间】:2018-11-24 09:13:36
【问题描述】:

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

// Pseudocode
MyObjectClass myTypedVar = new MyObjectClass();

Type myKnownType = myTypedVar.GetType();

var anotherObject = (myKnownType) anObjectVarThatIsReallyMyObjectClass;

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

【问题讨论】:

  • 使用 Convert.ChangeType。
  • 天哪。掌心。
  • " 需要这样做的原因对答案并不重要" 当然这很重要。尤其重要的是要知道在投射后要对对象执行什么操作。

标签: c# casting


【解决方案1】:

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

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

但是,当使用像这样的动态类型时,您不会得到任何类型的编译时检查。请参阅以下博客文章了解更多信息。

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

【讨论】:

    猜你喜欢
    • 2012-02-18
    • 2013-08-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-08-08
    相关资源
    最近更新 更多