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

Ami*_*ban 6 c# methods class function parameter-passing

我有两个班:

Class Gold;
Class Functions;
Run Code Online (Sandbox Code Playgroud)

有一种方法ClassGet在类Functions,其具有2个参数.我想将类Gold作为参数发送给我在课堂上的一个方法Functions.这怎么可能?

例如:

public void ClassGet(class MyClassName, string blabla)
{
    MyClassName NewInstance = new MyClassName();
}
Run Code Online (Sandbox Code Playgroud)

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

Jer*_*gen 13

您尝试实现的功能已经存在(有点不同)

查看Activator类:http://msdn.microsoft.com/en-us/library/system.activator.aspx

例:

object instance = Activator.Create(className);
Run Code Online (Sandbox Code Playgroud)

或者像这样:

Type type = typeof(MyClass);

MyClass instance = (MyClass)Activator.Create(type);
Run Code Online (Sandbox Code Playgroud)

或者在你的情况下:

public void ClassGet(string MyClassName,string blabla)
{
    object instance = Activator.Create(MyClassName);
}

// Call it like:

Gold g = new Gold();
g.ClassGet("MyClass", "blabla");
Run Code Online (Sandbox Code Playgroud)


Kha*_*han 7

您在寻找类型参数吗?

例:

    public void ClassGet<T>(string blabla) where T : new()
    {
        var myClass = new T();
        //Do something with blablah
    }
Run Code Online (Sandbox Code Playgroud)


Guf*_*ffa 5

您可以将其作为 type 的参数发送Type,但随后您需要使用反射来创建它的实例。您可以改用泛型参数:

public void ClassGet<MyClassName>(string blabla) where MyClassName : new() {
  MyClassName NewInstance = new MyClassName();
}
Run Code Online (Sandbox Code Playgroud)

  • 作为字符串?这绝对不是你问的……所以,错误的问题。;) 然后您将使用`Activator.CreateInstance(typestr, false)` 方法从该字符串创建一个实例。 (9认同)