http://markmail.org/message/6rlrzkgyx3pspmnfで説明されている問題と非常によく似た問題があります。これは、異なるサービス タイプを使用してアクセスしている場合に、シングルトンが実際に複数のインスタンスを作成することに関するものです。
私はコンパクトフレームワーク用のNinject 2の最新リリースを使用していますが、私が抱えている正確な問題は、同じプロバイダーメソッドを次のようにバインドした場合です。
Func<Service> serviceCreator = () => new Service(false);
kernel.Bind<IService>().ToMethod(serviceCreator).InSingletonScope();
kernel.Bind<Service>().ToMethod(serviceCreator).InSingletonScope();
IService と Service の両方として解決すると、Service の 2 つのインスタンスが作成されているようです。
これにより、サービスの解決時に循環依存例外が発生します。
これは仕様によるものですか、それともバグですか?