0

初心者: ジェネリック コレクションを返すメソッドを次のように書きたい:

public IEnumerable<T> ABC( string x){

if( x== "1")
{ Collection<A> needs to be returned}

if(x=="2")
{ Collection<B> needs to be returned}
..
so on
}

質問: - メソッドに渡された "X" に基づいて、さまざまなタイプのコレクションが初期化され、返される必要がありますか? どうやってやるの?-これは正しいアプローチですか?- 一般的な使用法の詳細を取得するためのリンクはありますか?

4

2 に答える 2

0

クラスのタイプを識別するために文字列を渡す必要はありません。次の汎用メソッドで呼び出すだけで、その T タイプのリストが初期化されます。

        /// <summary>
        /// Gets the initialize generic list.
        /// </summary>
        /// <typeparam name="T"></typeparam>
        public IList<T> GetInitializeGenericList<T>() where T : class
        {
            Type t = typeof(List<>);
            Type typeArgs =typeof(T);
            Type type = t.MakeGenericType(typeArgs);
            // Create the List according to Type T
            dynamic reportBlockEntityCollection = Activator.CreateInstance(type);

            // If you want to pull the data into initialized list you can fill the data
            //dynamic entityObject = Activator.CreateInstance(typeArgs);

            //reportBlockEntityCollection.Add(entityObject);

            return reportBlockEntityCollection;
        }
于 2013-09-11T05:50:54.893 に答える