是否可以从方法中的字符串参数调用构造函数?

时间:2014-03-03 09:52:01

标签: c# string parameters constructor

我想知道是否可以使用Reflection或其他方法通过将className作为字符串传递给方法来调用方法中的构造函数。这是在解释命令的上下文中完成的。试图避免切换语句(我在学校有一些奇怪的任务,我正在寻找考试的捷径)。

    Class SomeClass
    {
      //irrelevant code here 

      public BaseClass SomeMethod(string constructorName)
      {
       //call constructor here through string parameter to avoid switch statements
       //for example string constructorName=SomeDerivedClassName
       // and the result should be:
       return SomeDerivedClassName(this.SomeProperty,this.SomeOtherPropertY);
      }

    }

1 个答案:

答案 0 :(得分:2)

尝试类似:

class SomeClass
{
  //irrelevant code here 

  public BaseClass SomeMethod(string constructorName)
  {
    // possibly prepend namespace to 'constructorName' string first

    var assemblyToSearch = typeof(SomeClass).Assembly;
    var foundType = assemblyToSearch.GetType(constructorName);

    return (BaseClass)Activator.CreateInstance(foundType,
      this.SomeProperty, this.SomeOtherPropertY);
  }
}

当然,如果类可以在不同的程序集中,请相应地修改代码。

这假设有问题的构造函数是public