¿Es posible vincular diferentes interfaces a la misma instancia de una clase implementando todas ellas?

Tengo la siguiente situación (simplificada): Tengo dos interfaces

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

y

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

y una clase implementando ambos:

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

    public void DoSomething()
    {
    }

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

Ahora enlace la misma clase a ambas interfaces usando Ninject. Ya que quiero elmisma instancia deIAmAnImplementation siendo usado paraIAmAnInterface tanto comoIAmAnInterfaceToo está claro que necesito algún tipo de singleton. Jugué un poco conninject.extensions.namedscope tanto comoInScope() pero no tuvo éxito. Mi último intento fue:

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

Pero desafortunadamente cuando solicito una instancia de mi clase de prueba a través dekernel.Get<IDependOnBothInterfaces>(); de hecho, utiliza diferentes instancias 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>

¿Hay alguna manera de decirle a Ninject que use la misma instancia deIAmAnImplementation paraIAmAnInterface tanto comoIAmAnInterfaceToo?

Respuestas a la pregunta(1)

Su respuesta a la pregunta