がJsonSettingsProvider
とXmlSettingsProvider
で実装されている場合など、IOCとの特定のインターフェイス(複数のNinjectを使用しますが一般的に回答できます)に複数のデータプロバイダを登録するにはどうすればいいですか?同じインターフェイスのMVC多重登録を使用するIOC
XMLからJSONへのデータ(この場合は設定)を移行しており、アプリケーションで同時に使用する必要があります(どちらか一方を選択するのではなく、両方を同時に実行する必要があります)。ですから、私はXMLベースのプロバイダがシリアル化されたものを読み込み、JSONプロバイダをJSONとしてシリアル化する必要があります。うまくいけば、あなたは私が何を意味するかを理解する
kernel.Bind<ISettingsRepository>()
.To<XmlSettingsProvider>()
.InRequestScope();
:
public class WebSettings
{
[Inject]
private ISettingsRepository _repository;
private void Load()
{
_repository = DependencyResolver.Current
.GetService<ISettingsRepository>();
...
今私は、次のような登録を持っていると思います。
public IUnityContainer RegisterInstance(
Type t,
string name,
Object instance,
LifetimeManager lifetime
)
を、あなたが解決するときに、ちょうど必要なインスタンスの名前を渡します
だけ考えた上でこのスレッドを見ても、それはできませんあなたは、クラスの正しい実装を選択するためにFactoryパターンを使用することができます(JsonSettingsProviderかのどちらかXMLSettingsProvider)、あなたの要件に応じて、条件の下でファクトリメソッドのreturntypeとしてISettingsRepositoryインターフェイスを返します。あなたはどう思いますか? – Dinesh
はい、これは1つのオプションですが、これまでのファクトリを使用していないので、コードサンプルがうまくいくでしょう – mare