Ist es möglich, verschiedene Schnittstellen an dieselbe Instanz einer Klasse zu binden, die alle implementiert?

Ich habe folgende (vereinfachte) Situation: Ich habe zwei Schnittstellen

<code>interface IAmAnInterface
{
    void DoSomething();
}
</code>

und

<code>interface IAmAnInterfaceToo
{
    void DoSomethingElse();
}
</code>

und eine Klasse, die beide implementiert:

<code>class IAmAnImplementation: IAmAnInterface, IAmAnInterfaceToo
{
    public IAmAnImplementation()
    {
    }

    public void DoSomething()
    {
    }

    public void DoSomethingElse()
    {
    }
}
</code>

Jetzt binde ich dieselbe Klasse mit Ninject an beide Schnittstellen. Da will ich dasgleiche Instanz vonIAmAnImplementation verwendet werden fürIAmAnInterface ebenso gut wieIAmAnInterfaceToo Es ist klar, dass ich eine Art Singleton brauche. Ich habe rumgespieltninject.extensions.namedscope ebenso gut wieInScope() hatte aber keinen erfolg. Mein letzter Versuch war:

<code>Bind<IAmAnImplementation>().ToSelf().InSingletonScope();
Bind<IAmAnInterface>().To<IAmAnImplementation>().InSingletonScope();
Bind<IAmAnInterfaceToo>().To<IAmAnImplementation>().InSingletonScope();
</code>

Aber leider, wenn ich über eine Instanz meiner Testklasse anfragekernel.Get<IDependOnBothInterfaces>(); Tatsächlich werden verschiedene Instanzen von verwendetIAmAnImplementation.

<code>class IDependOnBothInterfaces
{
    private IAmAnInterface Dependency1 { get; set; }
    private IAmAnInterfaceToo Dependency2 { get; set; }

    public IDependOnBothInterfaces(IAmAnInterface i1, IAmAnInterfaceToo i2)
    {
        Dependency1 = i1;
        Dependency2 = i2;
    }

    public bool IUseTheSameInstances
    {
        get { return Dependency1 == Dependency2; } // returns false
    }
}
</code>

Gibt es eine Möglichkeit, Ninject anzuweisen, dieselbe Instanz von zu verwenden?IAmAnImplementation zumIAmAnInterface ebenso gut wieIAmAnInterfaceToo?

Antworten auf die Frage(1)

Ihre Antwort auf die Frage