【问题标题】:Trying to create an instance of an object dynamically [duplicate]尝试动态创建对象的实例[重复]
【发布时间】:2016-01-29 11:34:41
【问题描述】:

出现以下错误...

错误 1 ​​无法将类型 'object' 隐式转换为 'CSV_OOP_Convert.FileConverter'。存在显式转换(是 你错过了一个 投?)\server\UserShares\D Bell\VSC\CSV_OOP_Convert\CSV_OOP_Convert\Form1.cs 44 39 CSV_OOP_Convert

String className = cmbConversionAlgorithm.Text;
string namespaceName = "CSV_OOP_Convert";

FileConverter myObj =Activator.CreateInstance(Type.GetType(namespaceName + "." + className));
ConvertFile(myObj);

cmbConversionAlgorithm 包含我希望为其创建实例的类的正确名称。

当我正常创建它时它工作正常。

CSV_OOP_Convert.TFConverter tfc = new CSV_OOP_Convert.TFConverter();

【问题讨论】:

  • CreateInstance 返回一个object,你需要转换:FileConverter myObj =(FileConverter)Activator.CreateInstance(...)

标签: c# oop reflection


【解决方案1】:

Activator.CreateInstance 返回一个object 类型的对象,所以它是一个完全不特定的类型。为了将其分配给更具体类型的变量,您需要进行显式类型转换:

FileConverter myObj = (FileConverter)Activator.CreateInstance(type);

【讨论】:

    【解决方案2】:

    激活器返回一个对象

    试试这样的:

    String className = cmbConversionAlgorithm.Text;
    string namespaceName = "CSV_OOP_Convert";
    
    Object myObj =Activator.CreateInstance(Type.GetType(namespaceName + "." + className));
    
    ConvertFile((FileConverter)myObj);
    

    【讨论】:

    • 4 等于答案...并且它是重复的 :) :) :)
    【解决方案3】:

    将结果转换为 FileConverter 类

    var myObj =Activator.CreateInstance(Type.GetType(namespaceName + "." + className)) as FileConverter;
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-10-20
      • 1970-01-01
      • 2017-04-17
      • 1970-01-01
      • 2017-09-28
      • 1970-01-01
      • 1970-01-01
      • 2020-02-18
      相关资源
      最近更新 更多