1

次のようなコードがあります。

    public static T CreateSomething<T>(SomeType a) where T : SomeMicrosoftBaseClass, new()
    {
        var newElement = new T { SomeProperty = a};
        DoStuff();
        return newElement;
    }

そして今、コードを変更して、SomeMicrosoftBaseClass のコンストラクターにブール値の引数を渡すことができるようにする必要があります。これは、構築時にのみ設定できます。

「new()」制約には public パラメーターのないコンストラクターが必要であり、インターフェイスを使用したり、SomeMicrosoftBaseClass を変更したりできなかったため、次のようにリフレクションを使用しています。

var newElement = (T) (typeof (T).GetConstructor(new Type[] { typeof(SomeType) }).Invoke(new object[] { a }));

誰かがこれを行うためのよりエレガントな方法を提案できますか?

4

1 に答える 1

2

たぶん、 Activator.CreateInstanceを使用できます:

var newElement = (T)Activator.CreateInstance(typeof(T),a);
于 2009-12-01T08:34:06.583 に答える