1

同様の構造を持つ 4 つのEFクラスと、構造と他のいくつかの小道具とメソッドを保持するジェネリック クラスがありEF、ジェネリック メソッド キャスト ジェネリックを目的の に書きたいと考えていますEF

private List<T> CastGenericToEF<T>(List<GenericClass> GenericList)
{
    List<T> Target = new List<T>();
    foreach (GenericClass I in GenericList)
    {
        //How can I do to create an Instance of T?
        ..... 
        // Some proccess here 
    }
    return Target;
}

私の質問: Tタイプの新しいインスタンスを作成したり、 T タイプを取得するにはどうすればよいですか?

4

2 に答える 2

2

T に制約を追加する必要があります。

private List<T> CastGenericToEF<T>(List<GenericClass> GenericList) where T : new()

次に、Tのインスタンスを作成できますnew T()

T の型を取得するには、次を使用します。typeof(T)

于 2013-10-13T13:06:00.833 に答える
1

T が new() を持つことができることを定義する必要があります

private List<T> CastGenericToEF<T>(List<GenericClass> GenericList) where T: new()
{
    List<T> Target = new List<T>();
    foreach (var generic in GenericList)
    {
        //How can I do to create an Instance of T?
        var tInstance = new T();
        // Some proccess here 
        var typeOf = typeof(T);

    }
    return Target;
}

T のプロパティ/メソッドにアクセスするには、何らかの方法でその型を指定する必要があります。仕様がなければ、T は何でもかまいません...

次の例では、Interface をどこかに定義し、T が実際にそのインターフェイスを実装する必要があることを指定します。そうすれば

    interface IGenericClass
    {
        void SomeMethod();
    }

インターフェイスによって定義されたプロパティまたはメソッドにアクセスできます

    private List<T> CastGenericToEF<T>(List<GenericClass> GenericList) where T : IGenericClass, new()
    {
        List<T> Target = new List<T>();
        foreach (var generic in GenericList)
        {
            //How can I do to create an Instance of T?
            var tInstance = new T();
            tInstance.SomeMethod();
            // Some proccess here 
            var typeOf = typeof(T);

        }
        return Target;
    }
于 2013-10-13T13:06:18.523 に答える