1. ホーム
  2. c#

[解決済み] C#のジェネリックス - 引数を指定して変数型のインスタンスを作成するには?重複

2023-04-24 13:09:44

質問

ジェネリッククラスで、ジェネリックタイプを持つオブジェクトをインスタンス化したい。その型のコンストラクタの引数を使いたい。

私のコードです。

public class GenericClass<T> where T : Some_Base_Class, new()
{
    public static T SomeFunction(string s)
    {
        if (String.IsNullOrEmpty(s))
            return new T(some_param);
    }
}

でエラーが出ます。

new T(some_param)

'T': 変数のインスタンスを作成する際に引数を与えることができない 型

どのようにすればよいのでしょうか?

どのように解決するのですか?

を見てみましょう。 Activator.CreateInstance . 例えば

var instance = Activator.CreateInstance(typeof(T), new object[] { null, null });

を置き換えると、明らかに null をその型のコンストラクタの1つが期待する適切な値に置き換えます。

に関するコンパイラーエラーが発生した場合 cannot convert object to type T についてコンパイラエラーが発生した場合、インクルードする as T :

var instance = Activator.CreateInstance(typeof(T), 
                  new object[] { null, null }) as T;