1


0

オブジェクトインスタンスをジェネリック型に変換する方法

メソッドには次のようなオブジェクトがあります:

Activator.CreateInstance(Type.GetType(TargetObject))

そして、私はこのオブジェクトをジェネリック型を受け入れる他のクラスに渡す必要があります:

public class Repository where T : class
{
}

このオブジェクトをT to Repositoryクラスとして使用するにはどうすればよいですか?

2 Answer


1


たとえば、リフレクションを使用してこれを行うことができます。

Type repoType  = typeof(Repository<>).MakeGenericType(yourType);

しかし、リフレクションはすぐに_more_リフレクションを生みます。リフレクションを介して `repoType`について話す必要があるからです。 ただし、この影響を最小限に抑える方法は_are_あります。

  • 非ジェネリックインターフェイス(最も単純なアプローチ)

  • すべてを行うリフレクションを介して汎用メソッド_once_を呼び出す 通常の静的汎用コードを介した追加作業

最初に、 `IRepository`インターフェイス(非ジェネリック)があるかもしれませんが、それは次のとおりです:

IRepository repo = (IRepository)Activator.CreateInstance(repoType);
repo.SomeNonGenericMethods(args); // etc


0


それは可能ではありません。 設計時にTを定義しました。