This question already has answers here:
Closed 4 years ago.
I have two classs:
Class Gold;
Class Functions;
There is a method ClassGet
in class Functions
, which has 2 parameters.
I want to send the class Gold
as parameter for one of my methods in class Functions
.
How is it possible?
For example:
public void ClassGet(class MyClassName, string blabla)
{
MyClassName NewInstance = new MyClassName();
}
Attention: I want to send MyClassName
as string parameter to my method.
The function you're trying to implement already exists (a bit different)
Look at the Activator class: http://msdn.microsoft.com/en-us/library/system.activator.aspx
example:
object instance = Activator.Create(className);
Or like this:
Type type = typeof(MyClass);
MyClass instance = (MyClass)Activator.Create(type);
or in your case:
public void ClassGet(string MyClassName,string blabla)
{
object instance = Activator.Create(MyClassName);
}
// Call it like:
Gold g = new Gold();
g.ClassGet("MyClass", "blabla");
Are you looking for type parameters?
Example:
public void ClassGet<T>(string blabla) where T : new()
{
var myClass = new T();
//Do something with blablah
}
You could send it as a parameter of the type Type
, but then you would need to use reflection to create an instance of it. You can use a generic parameter instead:
public void ClassGet<MyClassName>(string blabla) where MyClassName : new() {
MyClassName NewInstance = new MyClassName();
}
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
}
}