Czy można powiązać różne interfejsy z tą samą instancją klasy implementującej wszystkie z nich?

Mam następującą (uproszczoną) sytuację: mam dwa interfejsy

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

i

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

i klasa realizująca oba:

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

    public void DoSomething()
    {
    }

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

Teraz wiążę tę samą klasę z obydwoma interfejsami za pomocą Ninject. Od kiedy chcętej samej instancji zIAmAnImplementation używany doIAmAnInterface jak równieżIAmAnInterfaceToo jasne jest, że potrzebuję jakiegoś singletona. Bawiłem się zninject.extensions.namedscope jak równieżInScope() ale nie odniósł sukcesu. Moja ostatnia próba to:

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

Ale niestety, kiedy żądam instancji mojej klasy testowej przezkernel.Get<IDependOnBothInterfaces>(); w rzeczywistości używa różnych instancjiIAmAnImplementation.

<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>

Czy istnieje sposób, aby powiedzieć Ninjectowi, aby używał tej samej instancjiIAmAnImplementation dlaIAmAnInterface jak równieżIAmAnInterfaceToo?

questionAnswers(1)

yourAnswerToTheQuestion