Zamek Windsor z wieloma konstruktorami
Obecnie przeprowadzam konwersję, z użycia na Ninject, do bieżącej wersji Castle Windsor na prostą aplikację C # .NET.
Przeważnie konwersja przebiegła dobrze, a wdrożenie kontenerów przebiegło bez zarzutu. Mam jednak mały problem z obiektami repozytorium.
Mam obiekt repozytorium użytkownika zakodowany w następujący sposób:
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...
// -----------------------------------------------
}
Aby odpowiadać temu kodowi, ustawiłem następujące wpisy w pliku konfiguracyjnym mojej aplikacji:
<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>
Dla mnie wszystko wygląda tak, jak powinno. Gdy próbuję rozwiązać wystąpienie usługi IObjectContextFactory, odzyskuję obiekt ObjectContextFactory. Mój problem pojawia się, gdy próbuję rozwiązać instancję usługi IUserRepository. Jestem traktowany z następującym zachwycającym wyjątkiem:
Nie można utworzyć komponentu „userRepository”, ponieważ ma on zależności do spełnienia. UserRepository oczekuje na następujące zależności:
Usługi:
- SandCastle.DAL.Context.IObjectContext which was not registered.
Próbowałem wszystkiego, co mogę o tym myśleć. Tak więc, dla czytelników stackoverflow, mówię: masz jakieś pomysły?