Я пытаюсь абстрагировать некоторые простые задачи для некоторых очень простых объектов.
В моей модели предметной области есть ряд различных объектов, которые в основном служат для маркировки (классификации) «Программы». Бизнес-логика говорит, что программа может иметь столько их, сколько нужно, но никакие теги одного типа (например, «County») не могут иметь одно и то же имя, и вы не можете удалить тег, если у него есть программы, связанные с это.
Это построено на MVC3 с S # arp 2.0.
Модель предметной области имеет абстрактный базовый класс NamedEntity : Entity
, который определяет
public string Name { get; set; }
среди других свойств.
Определенные типы расширяют этот класс, добавляя все, что делает их уникальными (если вообще что-либо), например, Тема, которая является иерархической структурой и поэтому имеет дополнительные свойства для этого.
Я хотел создать INamedEntityTasks<T> where T: NamedEntity
, а затем иметь базовую версию этого для обработки рутинных задач, таких как bool CheckForDuplicateName(string Name)
, которые запускали бы доступ к его объекту INamedEntityQueries<T>
и вызывали T FindByName(string Name)
Если подклассу необходимо добавить дополнительные правила перед удалением (например, тема с потомками не может быть удалена), то он просто переопределяет виртуальный метод из базового класса.
Структура:
MyProject.Infrastructure
имеет INamedEntityQueries<T>
и NamedEntityQueries<T>
, а также ITopicQueries : INamedEntityQueries<Topic>
и TopicQueries: NamedEntityQueries<T>, ITopicQueries
MyProject.Domain.Contracts.Tasks
имеет INamedEntityTasks<T>
и ITopicTasks : INamedEntityTasks<Topic>
MyProject.Tasks
имеет NamedEntityTasks<T>
и TopicTasks: NamedEntityTasks<Topic>, ITopicTasks
Мой TopicsController
не будет работать из-за отсутствующей зависимости , которую я не могу понять.
Точное исключение:
Невозможно создать компонент
'MyProject.web.mvc.controllers.topicscontroller'
поскольку у него есть зависимости, чтобы быть
довольный.
MyProject.web.mvc.controllers.topicscontroller
ждет следующего
зависимости:
Услуги:
- MyProject.Infrastructure.Queries.ITopicQueries
который не был зарегистрирован.
- MyProject.Domain.Contracts.Tasks.ITopicTasks
который был зарегистрирован, но также
жду зависимости.
MyProject.Tasks.TopicTasks ждет
для следующих зависимостей:
Услуги:
- MyProject.Infrastructure.Queries.INamedEntityQueries`1 [[MyProject.Domain.Topic,
MyProject.Domain, версия = 1.0.0.0,
Культура = нейтральная, PublicKeyToken = ноль]]
который не был зарегистрирован.
Я проверил container
в ComponentRegistrar
с точкой останова, и она показывает 3 потенциально неправильно настроенных:
"MyProject.Tasks.NamedEntityTasks`1" NamedEntityTasks`1
"MyProject.Tasks.TopicTasks" ITopicTasks / TopicTasks
"MyProject.web.mvc.controllers.topicscontroller" TopicsController`TopicsController`
Буду признателен за любую помощь.