É possível associar diferentes interfaces à mesma instância de uma classe implementando todas elas?

Eu tenho a seguinte situação (simplificada): eu tenho duas interfaces

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

e

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

e uma classe implementando ambos:

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

    public void DoSomething()
    {
    }

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

Agora eu vinculo a mesma classe a ambas as interfaces usando o Ninject. Desde que eu quero omesma instância doIAmAnImplementation beeing usado paraIAmAnInterface assim comoIAmAnInterfaceToo É claro que preciso de algum tipo de singleton. Eu brinquei comninject.extensions.namedscope assim comoInScope() mas não teve sucesso. Minha última tentativa foi:

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

Mas infelizmente quando eu solicito uma instância da minha classe de teste viakernel.Get<IDependOnBothInterfaces>(); na verdade, usa diferentes instâncias deIAmAnImplementation.

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

Existe uma maneira de dizer Ninject para usar a mesma instância deIAmAnImplementation paraIAmAnInterface assim comoIAmAnInterfaceToo?

questionAnswers(1)

yourAnswerToTheQuestion