如何将Class作为方法的参数传递?

时间:2013-09-14 21:29:53

标签: c# function class methods parameter-passing

我有两个班级:

Class Gold;
Class Functions;

ClassGet中有一个方法Functions,它有2个参数。 我想将类Gold作为参数传递给我在课程Functions中的一个方法。 怎么可能?

例如:

public void ClassGet(class MyClassName, string blabla)
{
    MyClassName NewInstance = new MyClassName();
}

注意:我想将MyClassName作为字符串参数发送到我的方法。

4 个答案:

答案 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

            }

        }