我有两个班级:
Class Gold;
Class Functions;
类ClassGet
中有一个方法Functions
,它有2个参数。
我想将类Gold
作为参数传递给我在课程Functions
中的一个方法。
怎么可能?
例如:
public void ClassGet(class MyClassName, string blabla)
{
MyClassName NewInstance = new MyClassName();
}
注意:我想将MyClassName
作为字符串参数发送到我的方法。
答案 0 :(得分:11)
您尝试实施的功能已存在(略有不同)
查看Activator类:http://msdn.microsoft.com/en-us/library/system.activator.aspx
示例:
object instance = Activator.Create(className);
或者像这样:
Type type = typeof(MyClass);
MyClass instance = (MyClass)Activator.Create(type);
或在你的情况下:
public void ClassGet(string MyClassName,string blabla)
{
object instance = Activator.Create(MyClassName);
}
// Call it like:
Gold g = new Gold();
g.ClassGet("MyClass", "blabla");
答案 1 :(得分:3)
您在寻找类型参数吗?
示例:
public void ClassGet<T>(string blabla) where T : new()
{
var myClass = new T();
//Do something with blablah
}
答案 2 :(得分:2)
您可以将其作为Type
类型的参数发送,但是您需要使用反射来创建它的实例。您可以使用通用参数:
public void ClassGet<MyClassName>(string blabla) where MyClassName : new() {
MyClassName NewInstance = new MyClassName();
}
答案 3 :(得分:-1)
public void ClassGet(string Class, List<string> Methodlist)
{
Type ClassType;
switch (Class)
{
case "Gold":
ClassType = typeof(Gold); break;//Declare the type by Class name string
case "Coin":
ClassType = typeof(Coin); break;
default:
ClassType = null;
break;
}
if (ClassType != null)
{
object Instance = Activator.CreateInstance(ClassType); //Create instance from the type
}
}