如何将Class作为方法的参数传递?
我有两个class:
Class Gold; Class Functions;
类Functions
有一个方法ClassGet
,它有2个参数。 我想发送类Gold
作为类Functions
一个方法的参数。 这怎么可能?
例如:
public void ClassGet(class MyClassName, string blabla) { MyClassName NewInstance = new MyClassName(); }
注意:我想将MyClassName
作为字符串参数发送到我的方法。
您尝试实现的function已经存在(有点不同)
查看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");
您可以将其作为Type
的参数发送,但是您需要使用reflection来创建它的实例。 您可以使用通用参数:
public void ClassGet(string blabla) where MyClassName : new() { MyClassName NewInstance = new MyClassName(); }
你在寻找类型参数吗?
例:
public void ClassGet(string blabla) where T : new() { var myClass = new T(); //Do something with blablah }
public void ClassGet(string Class, List 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 } }