2

異なる型のインスタンスを作成する動的メソッドを作成しましたが、コンパイル時に上記のエラーが発生する理由がわかりません。また、戻り値を指定された型に再度キャストする必要がありますか?

 internal static T GetInstance<T>()
    {
        dynamic obj = Activator.CreateInstance(typeof(T));
        return obj;
    }

    private Foo f = GetInstance<Foo>();
4

1 に答える 1

7

MSDNが推奨する次のようなものを使用してみませんか。

internal static T GetInstance<T>() where T:new()
{
    return new T();
}

http://msdn.microsoft.com/en-us/library/0hcyx2kd.aspx

編集:

でも、なぜこの方法が欲しいのか分かりませんか?

を呼び出す代わりに、 typeパラメーターとして呼び出したい場合(または何かが足りない場合) 、Fooにはパラメーターなしのコンストラクターが必要なのでvar x = GetInstance<Foo>();、これを行うことができます。var x = new Foo();GetInstance<T>()Foo

于 2012-03-14T11:49:54.823 に答える