在C#中,如何针对类实例化对象;但是类名是字符串变量?**
String stringNameOfClass = "SomeClass";
{stringNameOfClass} theObject = new {stringNameOfClass}();
在js中,我认为我们可以使用eval()
var stringNameOfClass = "SomeClass";
eval('var theInstance = new ' + stringNameOfClass + '()');
theInstance.accessMethod();
[编辑] 鉴于: 类名称未知 但方法是已知的
我可以在给定的文件夹中获取所有类名。 现在我想通过它们的命名空间相应地实例化它们。 虽然,我知道我感兴趣的方法。
arrayOfString = getAllClassesByNamespace('TheNamespace','/path');
// now call testMe() per instance
foreach (string str in arrayOfString )
{
{str} arrayOfString[str] = new {str};
str.testMe();
//in js
eval('var obj_' + arrayOfString[str] + ' = new ' + arrayOfString[str] + '()');
//if first class found is TheClass.. this is what I want to do
TheClass obj_TheClass = new TheClass();
obj_TheClass.testMe();
}
答案 0 :(得分:1)
我认为您正在寻找Activator.CreateInstance方法,这将采用许多参数,但有一个将采用TypeName和Namespace允许您从其名称创建新类的实例。
https://msdn.microsoft.com/en-us/library/d133hta4(v=vs.110).aspx
答案 1 :(得分:1)
这是我在如何从字符串实例化类中找到的最直接的解决方案:https://msdn.microsoft.com/en-us/library/a89hcwhh.aspx
public class TestMethodInfo
{
public static void Main()
{
// Get the constructor and create an instance of MagicClass
String stringedClass = "MagicClass";
String stringedClassMethod = "theMethod";
Type magicType = Type.GetType(stringedClass);
ConstructorInfo magicConstructor = magicType.GetConstructor(Type.EmptyTypes);
object magicClassObject = magicConstructor.Invoke(new object[]{});
// Get the ItsMagic method and invoke with a parameter value of 100
MethodInfo magicMethod = magicType.GetMethod(stringedClassMethod);
object magicValue = magicMethod.Invoke(magicClassObject, new object[]{100});
Console.WriteLine("MethodInfo.Invoke() Example\n");
Console.WriteLine("MagicClass.theMethod() returned: {0}", magicValue);
}
}
干杯!