web-dev-qa-db-ja.com

クラスをメソッドのパラメーターとして渡す方法は?

私には2つのクラスがあります:

Class Gold;
Class Functions;

クラスClassGetにはメソッドFunctionsがあり、2つのパラメータがあります。クラスGoldのメソッドの1つのパラメータとしてクラスFunctionsを送信したいと思います。どうしてそれは可能ですか?

例えば:

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

注意:MyClassNameを文字列パラメータとしてメソッドに送信したいと思います。

6

実装しようとしている関数はすでに存在します(少し異なります)

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");
13

タイプパラメータをお探しですか?

例:

    public void ClassGet<T>(string blabla) where T : new()
    {
        var myClass = new T();
        //Do something with blablah
    }
7
Khan

タイプTypeのパラメーターとして送信することもできますが、その場合は、リフレクションを使用してインスタンスを作成する必要があります。代わりに、汎用パラメーターを使用できます。

public void ClassGet<MyClassName>(string blabla) where MyClassName : new() {
  MyClassName NewInstance = new MyClassName();
}
3
Guffa