How to pass a Class as parameter for a method?

75,697

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();
}
Share:
75,697
Amin AmiriDarban
Author by

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, 2021

Comments

  • Amin AmiriDarban
    Amin AmiriDarban almost 3 years

    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.

  • Amin AmiriDarban
    Amin AmiriDarban over 10 years
    Wrong answer...I Want to Send my Class name as string as parameter to my method
  • Guffa
    Guffa over 10 years
    As 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.