【问题标题】:Create an instance of a class according to a string根据字符串创建类的实例
【发布时间】:2014-03-15 11:45:16
【问题描述】:

我的项目中有 12 个类,如下所示:

class class1
{

}

class class2
{

}

在另一个类中,我有一个方法要创建class1class2 的实例 根据字符串:

public void MyMethod(string s)
{
//I want to create an instance of class1 if s=="class1" or class2 if s=="class2"
} 

我该怎么做?

【问题讨论】:

标签: c# class


【解决方案1】:

这是一个解决方法,试试这个希望它会起作用。

首先您需要在字符串中传递类的实际名称,例如,如果您有一个类 ClassA 然后将 ClassA 传递给这个类,它将创建该类的一个实例。

private object MyMethod(string className)
{
    var assembly = Assembly.GetExecutingAssembly();

    var type = assembly.GetTypes()
    .First(t => t.Name == className);

    return Activator.CreateInstance(type);
}

【讨论】:

  • 在这种情况下,我无法访问类的方法,因为它是一个对象。
  • 你错了,这不是对象,它正在返回你想要的类的对象。
  • 我将此方法声明为静态,这就是您无法从非静态类型访问它的原因。现在我将其更改为非静态方法,现在它将可供您的智能感知使用。
猜你喜欢
  • 2020-07-30
  • 1970-01-01
  • 2015-07-22
  • 1970-01-01
  • 2011-06-02
  • 2016-11-03
  • 1970-01-01
相关资源
最近更新 更多