Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/334.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 从字符串调用对象_C#_.net_.net 3.5 - Fatal编程技术网

C# 从字符串调用对象

C# 从字符串调用对象,c#,.net,.net-3.5,C#,.net,.net 3.5,可能重复: 希望这是非常简单的 我希望根据对象名称的字符串表示动态调用该对象。下面是我想做的一个例子: public class Class1 { public string Property1 { get; set; } public string Property2 { get; set; } public string Property3 { get; set; } } public class Class2 { public string Proper

可能重复:

希望这是非常简单的

我希望根据对象名称的字符串表示动态调用该对象。下面是我想做的一个例子:

public class Class1
{
    public string Property1 { get; set; }
    public string Property2 { get; set; }
    public string Property3 { get; set; }
}

public class Class2
{
    public string Property1 { get; set; }
    public string Property2 { get; set; }
    public string Property3 { get; set; }
}
Object cls = Object.GetClassFromString("Class2");
我的目标是从字符串表示调用
Class2
GetClassFromString()
显然是虚构的,但希望能描述我想要做的事情):


然后
cls
将是
Class2

中的一个对象,请查看该方法。

如果(str==“Class2”)返回新的Class2()?DTB,这看起来很实用。非常感谢。但是,如果我使用的是可以动态调用40多个类的东西。我希望避免为将来可能添加的每个新类添加新的if条件。你对更具活力的方式有什么建议吗?@BenRecord:看看我链接的问题:(你的是这个问题的副本)。这是一个很好的解决方案,不过更好的解决方案可能是重构应用程序,这样您就不需要反射,除非您有某种异国情调的设计。
Activator.CreateInstance
就是您要找的(尽管要小心,但您必须使用完全限定的名称,因为类2可以存在于appdomain中加载的不同名称空间和不同程序集中。尽管如此,我还是要提醒您,这样做几乎肯定是一个坏主意。我以前写过动态的应用程序,甚至一次都不依赖它。