Search code examples
c#xamarindependency-injectionninject

Is it possible to find all objects created with Ninject, registered as interface A, but implementing interface B?


I have following problem.

Let's say we have following interface:

public interface IMyObserver
{
    Task<bool> OnSomeEvent();
}

And we have few services:

public class MyService1 : IMyService1, IMyObserver
{ ... }

public class MyService2 : IMyService2 , IMyObserver
{ ... }

etc.

They are bound like this:

Kernel.Bind<IMyService1>().To<MyService1 >();
Kernel.Bind<IMyService2>().To<MyService2>();

etc.

Is it possible to inject in a ViewModel constructor all instances implementing IMyObserver interface? Something like this:

public MyViewModel(IList<IMyObserver> observers)
{
}

Solution

  • Have you tried binding and resolving like this ?

    Kernel.Bind<IMyService1, IMyObserver>().To<MyService1>();
    Kernel.Bind<IMyService2, IMyObserver>().To<MyService2>();
    

    and

    public MyViewModel(IEnumerable<IMyObserver> observers)
    {
    }