#c# #.net-core #dependency-injection
Вопрос:
В настоящее время я думаю, является ли использование «пустых интерфейсов» (он же интерфейсы маркеров), которые обычно рассматриваются как запах кода, хорошим подходом при использовании внедрения зависимостей.
Пример:
interface IWorkspace { ... // some definitions here } interface IDynamicWorkspace : IWorkspace { } interface IStaticWorkspace : IWorkspace { } class Workspace1 : IDynamicWorkspace { ... // IWorkspace implementation } class Workspace2 : IStaticWorkspace { ... // IWorkspace implementation } class WorkspaceProvider { IEnumerablelt;IWorkspacegt; GetWorkspaces() { if (someCondition) return diContainer.GetServiceslt;IDynamicWorkspacegt;(); else return diContainer.GetServiceslt;IStaticWorkspacegt;(); } }
Для меня такой подход имеет смысл, но, возможно, есть лучшее решение этой проблемы.
Кстати: Я использую C# и реализацию Microsoft DependencyInjection, но я предполагаю, что эта проблема также применима к другим языкам и фреймворкам.
Комментарии:
1. Чтобы мы могли прокомментировать, является ли это хорошим подходом или существует, возможно, более подходящий дизайн, требуется гораздо больше деталей.
2. Обычно фабрика используется для получения определенного экземпляра по условию.