12

1 つのタイプを複数のインターフェースに登録することは可能ですか?

2 つのインターフェイスを実装するクラスがあります

MyService : IService1, IServier2 {}

このタイプを両方のインターフェースに登録したいと思います。

container.RegisterType<IService1, MyService>(CreateLifetime());
container.RegisterType<IService2, MyService>(CreateLifetime());

残念ながら、解決後に 2 つの異なるインスタンスがあります。共通のライフタイムを使用しようとしましたが、使用できないというメッセージが表示されました。

4

3 に答える 3

17

私は通常これを書きます:

      .RegisterType<MyService>(CreateLifeTime())
      .RegisterType<IService1, MyService>()
      .RegisterType<IService2, MyService>();

もちろん、TransientLifetimeManager を使用しても、MyService の 2 つの異なるインスタンスを取得できます。

上記のコードは、、、で動作PerResolveLifetimeManagerPerResolveLifetimeManagerますPerThreadLifetimeManager

于 2012-06-21T06:33:10.567 に答える