10

私は2つのクラスを持っています:

Class Gold;
Class Functions;

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

例えば:

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

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

4

4 に答える 4

16

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

例:

    public void ClassGet<T>(string blabla) where T : new()
    {
        var myClass = new T();
        //Do something with blablah
    }
于 2013-09-14T21:34:27.803 に答える
15

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

Activator クラスを見てください: http://msdn.microsoft.com/en-us/library/system.activator.aspx

例:

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);
}

使用法:

var myClassInstance = CreateByTypeName("MyClass");
于 2013-09-14T21:33:44.267 に答える
6

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

public void ClassGet<MyClassName>(string blabla) where MyClassName : new() {
  MyClassName NewInstance = new MyClassName();
}
于 2013-09-14T21:34:26.337 に答える