Можно ли найти все объекты, созданные с помощью Ninject, зарегистрированные как интерфейс A, но реализующие интерфейс B? - PullRequest
1 голос
/ 25 марта 2020

У меня следующая проблема.

Допустим, у нас есть следующий интерфейс:

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

И у нас есть несколько служб:

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

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

et c.

Они связаны следующим образом:

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

et c.

Возможно ли внедрить в конструктор ViewModel все экземпляры, реализующие интерфейс IMyObserver? Примерно так:

public MyViewModel(IList<IMyObserver> observers)
{
}

1 Ответ

0 голосов
/ 25 марта 2020

Вы пробовали связывать и разрешать, как это?

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

и

public MyViewModel(IEnumerable<IMyObserver> observers)
{
} 
...