Долгосрочный читатель впервые писатель здесь. В настоящее время я перехожу к использованию Ninject для текущей версии Castle Windsor для простого приложения C# .NET.Замок Виндзор: проблема с несколькими конструкторами
По большей части конверсия прошла успешно, а реализация контейнеров выполнена безупречно. Однако у меня есть небольшая проблема с моими объектами репозитория.
У меня есть объект хранилища пользователя, который кодируется следующим образом:
public class UserRepository : IUserRepository {
public UserRepository(IObjectContext objectContext) {
// Check that the supplied arguments are valid.
Validate.Arguments.IsNotNull(objectContext, "objectContext");
// Initialize the local fields.
ObjectContext = objectContext;
}
public UserRepository(IObjectContextFactory factory)
: this(factory.CreateObjectContext()) {
}
// -----------------------------------------------
// Insert methods and properties...
// -----------------------------------------------
}
Чтобы соответствовать этому коду, я имею установку следующие записи в файле конфигурации моего приложения:
<castle>
<components>
<component id="objectContextFactory" lifestyle="custom"
customLifestyleType="Common.Infrastructure.PerWebRequestLifestyleManager, Common.Castle"
service="Project.DAL.Context.IObjectContextFactory, Project.DAL.LINQ"
type="project.DAL.Context.ObjectContextFactory, Project.DAL.LINQ">
</component>
<component id="userRepository" lifestyle="custom"
customLifestyleType="Common.Infrastructure.PerWebRequestLifestyleManager, Common.Castle"
service="Project.BL.Repository.IUserRepository, Project.BL"
type="Project.BL.Repository.UserRepository, Project.BL.LINQ">
<parameters>
<factory>${objectContextFactory}</factory>
</parameters>
</component>
</components>
</castle>
Для меня все выглядит так, как должно. Когда я пытаюсь разрешить экземпляр службы IObjectContextFactory, я извлекаю объект ObjectContextFactory. Моя проблема возникает, когда я пытаюсь разрешить экземпляр службы IUserRepository. Я отношусь к следующему восхитительному исключению:
Невозможно создать компонент userRepository, так как он будет иметь удовлетворяющие зависимости. userRepository ждет следующих зависимостей:
Услуги:
- SandCastle.DAL.Context.IObjectContext which was not registered.
Я пробовал все, что я могу думать об этом. Итак, для вас, читателей stackoverflow, я говорю: есть идеи?
Работал как вполне достойно! Благодаря! – highvoltage
«Windsor пытается соответствовать самому жадному конструктору (один с большинством параметров, которые он может удовлетворить)». Я думаю, что правильнее сказать «из списка конструкторов, которые содержат только разрешимые параметры, выбирается конструктор с наибольшим количеством параметров». – Steven
@Steven как насчет сейчас? –