Сообщение Re[6]: Как лучше сделать плагинную систему сегодня? от 26.12.2014 14:28
Изменено 26.12.2014 14:30 Sinix
Здравствуйте, Shmj, Вы писали:
S>>Для serviceProvider достаточно прописать только источники и передать всем один и тот же провайдер (например через конструктор). Получатель сам заберёт нужное, тем более что выставляемые интерфейсы документируются через extension-методы к serviceProvider.
S>А пример можно?
Так там всё просто,
Собственно, всё. Код пишется за полчаса, потом без ломания контракта прикручивается что угодно, например:
* контексты (новые сервисы, скрытие сервиса на время)
* своя логика создания для отдельных сервисов
* фабрики (для однотипных сервисов)
и т.д и т.п.
S>>Для serviceProvider достаточно прописать только источники и передать всем один и тот же провайдер (например через конструктор). Получатель сам заберёт нужное, тем более что выставляемые интерфейсы документируются через extension-методы к serviceProvider.
S>А пример можно?
Так там всё просто,
IServiceProvider provider = new ServiceProvider()
{
new MyService(), // : IMyService
new LoggerService(), // : ILoggerService
...
};
...
// где-то в другом месте
IMyService x = provider.GetMyService(); // extension method, == provider.Get<IMyService>();
Собственно, всё. Код пишется за полчаса, потом без ломания контракта прикручивается что угодно, например:
* контексты (новые сервисы, скрытие сервиса на время)
* своя логика создания для отдельных сервисов
* фабрики (для однотипных сервисов)
и т.д и т.п.
Re[6]: Как лучше сделать плагинную систему сегодня?
Здравствуйте, Shmj, Вы писали:
S>>Для serviceProvider достаточно прописать только источники и передать всем один и тот же провайдер (например через конструктор). Получатель сам заберёт нужное, тем более что выставляемые интерфейсы документируются через extension-методы к serviceProvider.
S>А пример можно?
Так там всё просто,
Собственно, всё. Код пишется за полчаса, потом без ломания контракта прикручивается что угодно, например:
* контексты (новые сервисы, скрытие сервиса на время)
* своя логика создания для отдельных сервисов
* фабрики (для однотипных получателей)
и т.д и т.п.
S>>Для serviceProvider достаточно прописать только источники и передать всем один и тот же провайдер (например через конструктор). Получатель сам заберёт нужное, тем более что выставляемые интерфейсы документируются через extension-методы к serviceProvider.
S>А пример можно?
Так там всё просто,
IServiceProvider provider = new ServiceProvider()
{
new MyService(), // : IMyService
new LoggerService(), // : ILoggerService
...
};
...
// где-то в другом месте
IMyService x = provider.GetMyService(); // extension method, == provider.Get<IMyService>();
Собственно, всё. Код пишется за полчаса, потом без ломания контракта прикручивается что угодно, например:
* контексты (новые сервисы, скрытие сервиса на время)
* своя логика создания для отдельных сервисов
* фабрики (для однотипных получателей)
и т.д и т.п.