C#从字符串创建类的实例

C#从字符串创建类的实例,c#,reflection,instance,C#,Reflection,Instance,我是C#新手,我想在运行时为MyTestClass创建一个实例。我怎么做 public class MyTestClass { public int Value { get; set; } public MyTestClass() { Value = 5; } } 编辑: 我只想从字符串变量创建MyTestClass的实例,如 string classInstance = "MyTestClass" 我第一次无法完全解释,很抱歉。您可以在运行

我是C#新手,我想在运行时为MyTestClass创建一个实例。我怎么做

public class MyTestClass
{
    public int Value { get; set; }

    public MyTestClass()
    {
        Value = 5;
    }
}
编辑: 我只想从字符串变量创建MyTestClass的实例,如

string classInstance = "MyTestClass"

我第一次无法完全解释,很抱歉。

您可以在运行时使用激活器类创建一个新实例。像这样,

var instance = (MyTestClass)Activator.CreateInstance(typeof(MyTestClass));
public static I CreateInstance(),其中I:class
{  
字符串assemblyPath=Environment.CurrentDirectory+“\\MyTestClass.exe”;
装配;
assembly=assembly.LoadFrom(assemblyPath);
类型Type=assembly.GetType(“MyTestClass”);
将Activator.CreateInstance(类型)返回为I;
}

为什么建议使用MyTestClass而不是MyTestClass=new MyTestClass()?我认为这可能是一个反射问题,因为“反射”一词中提到了这个问题。@Rainman除了有不可编译的代码外,你没有使用反射。@information\u interchange True,但是如果你在编译时已经知道类型,你根本不需要反射。你说的“在运行时”是什么意思?
新建MyTestClass()
public static I CreateInstance<I>() where I : class  
{  
    string assemblyPath = Environment.CurrentDirectory + "\\MyTestClass.exe";  

    Assembly assembly;  

    assembly = Assembly.LoadFrom(assemblyPath);  
    Type type = assembly.GetType("MyTestClass");  
    return Activator.CreateInstance(type) as I;  
}