0

LazyLoader<T> というオブジェクトがあります。ORM に接続して、必要に応じて T タイプのデータをロードします。できます。

LazyLoader<T> は ILazyLoader を継承しています。

課題: オブジェクト型からジェネリック型をロードできるファクトリ クラスを作成します。

のように、

public ILazyLoader CreateLazyLoader(int id, Type typeToLoad)
{
    return new LazyListLoader<typeToLoad>(id);
}

問題: <typeToLoad> が Type オブジェクトを受け入れません。Type <typeToLoad> を <T> (T は typeToLoad) のように機能するものに変換するにはどうすればよいですか?

4

2 に答える 2

8
var llType = typeof(LazyListLoader<>).MakeGenericType(typeToLoad);
return (ILazyLoader)Activator.CreateInstance(llType, id);
于 2013-08-26T18:28:57.193 に答える
3

以下を試してください

var unboundType = typeof(LazyListLoader<>);
var boundType = unboundType.MakeGenericType(typeToLoad);
return (ILazyLoader)Activator.CreateInstance(boundType, new[] {id});
于 2013-08-26T18:29:18.487 に答える