Внедрение зависимостей в MVVMLight ViewModelLocator - PullRequest
0 голосов
/ 20 июля 2011

У меня есть ViewModelLocator из MVVMLight, содержащий мои MainViewModel.

У меня есть еще один синглтон-класс ResourceLogger, который делает что-то еще.

ResourceLogger создан в App.xaml.cs использование:

var resourceLogger = kernel.Get<ResourceLogger>();

MainViewModel зависит от ResourceLogger.

У меня проблемы с введением ResourceLogger в MainViewModel следующим образом:

[Inject]
public MainViewModel(ResourceLogger resourceLogger) { ... }

Проблема в том, что он создает два ResourceLogger класса.

Модуль NinjectModule выглядит следующим образом:

Bind<ResourceLogger>().ToSelf().InSingletonScope();
Bind<MainViewModel>().ToSelf().InSingletonScope();

Есть ли какой-нибудь способ поделиться ядром между App.xaml.cs иViewModelLocator?

Как я могу решить эту проблему?

1 Ответ

0 голосов
/ 21 июля 2011

Самый простой способ - создать общедоступный статический класс / переменную для ядра, а затем использовать его для всех регистраций и вызовов Get ().

Кроме того, вы должны делать все возможное, чтобы иметь только один вызов kernel.Get () (или хотя бы как можно меньше вызовов) во всей вашей системе.

...