【问题标题】:Initializing a Class dynamically using a string as class name [duplicate]使用字符串作为类名动态初始化类[重复]
【发布时间】:2014-10-20 09:44:21
【问题描述】:

我是 C# 新手,正在编写一些自动化框架。我想根据条件动态初始化一个类。

我根据条件将类的名称作为字符串获取。 例如:“Vehicle_”+ typeOfvehicle => 在运行时可能是 Vehicle_2Wheeler 或 Vehicle_3Wheeler 或 Vehicle_4Wheeler。

我现在使用 if , else 语句。但是,如果我可以使用我想要动态初始化的 Class 类型来初始化该类,那就更好了。

我认为我需要使用反射 API,但不知道如何实现。

如果有人对此有任何想法,请告诉我。

【问题讨论】:

    标签: c#


    【解决方案1】:

    在 C# 中,Type.GetType("Truck") 将返回一个您可以实例化的类型

    var type = Type.GetType("MyProject.Truck");
    var instance = (Vehicle)Activator.CreateInstance(type);
    

    如果您在编译时不知道具体类型,请不要进行强制转换,而只使用对象、动态或基类。

    传递参数:

    Activator.CreateInstance(type, arg1, arg2);
    

    【讨论】:

      猜你喜欢
      • 2015-12-31
      • 1970-01-01
      • 2018-12-06
      • 1970-01-01
      • 2013-02-10
      • 1970-01-01
      • 1970-01-01
      • 2013-07-12
      • 1970-01-01
      相关资源
      最近更新 更多