How to pass a Class as parameter for a method?
Solution 1
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:
private static object CreateByTypeName(string typeName)
{
// scan for the class type
var type = (from assembly in AppDomain.CurrentDomain.GetAssemblies()
from t in assembly.GetTypes()
where t.Name == typeName // you could use the t.FullName as well
select t).FirstOrDefault();
if (type == null)
throw new InvalidOperationException("Type not found");
return Activator.CreateInstance(type);
}
Usage:
var myClassInstance = CreateByTypeName("MyClass");
Solution 2
Are you looking for type parameters?
Example:
public void ClassGet<T>(string blabla) where T : new()
{
var myClass = new T();
//Do something with blablah
}
Solution 3
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();
}
Amin AmiriDarban
Accomplished software development leader offering with over 15 years of experience. Motivating revenue through analyze, organize, develop and maintaining several automation, many websites and much more applications, for employer or costumer. Implemented custom applications, Smart Kiosks, Online Shop, High Secure and Multi Thread Apps.
Updated on June 23, 2021Comments
-
Amin AmiriDarban almost 3 years
I have two classs:
Class Gold; Class Functions;
There is a method
ClassGet
in classFunctions
, which has 2 parameters. I want to send the classGold
as parameter for one of my methods in classFunctions
. 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. -
Amin AmiriDarban over 10 yearsWrong answer...I Want to Send my Class name as string as parameter to my method
-
Guffa over 10 yearsAs a string? That's definitely not what you asked for... so, wrong question. ;) Then you would use the
Activator.CreateInstance(typestr, false)
method to create an instance from that string.