Schloss Windsor mit mehreren Konstrukteuren
Ich bin derzeit dabei, eine Umstellung von Ninject auf die aktuelle Version von Castle Windsor für eine einfache C # .NET-Anwendung vorzunehmen.
Der Umbau ist größtenteils gut verlaufen und die Umsetzung der Container hat einwandfrei geklappt. Ich habe jedoch ein kleines Problem mit meinen Repository-Objekten.
Ich habe ein Benutzer-Repository-Objekt, das folgendermaßen codiert ist:
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...
// -----------------------------------------------
}
Um diesem Code zu entsprechen, habe ich die folgenden Einträge in der Konfigurationsdatei meiner Anwendung eingerichtet:
<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>
Für mich sieht alles so aus, wie es sein sollte. Wenn ich versuche, eine Instanz des IObjectContextFactory-Dienstes aufzulösen, rufe ich ein ObjectContextFactory-Objekt ab. Mein Problem tritt auf, wenn ich versuche, eine Instanz des IUserRepository-Dienstes zu beheben. Ich werde mit der folgenden erfreulichen Ausnahme behandelt:
Die Komponente 'userRepository' kann nicht erstellt werden, da Abhängigkeiten zu erfüllen sind. userRepository wartet auf die folgenden Abhängigkeiten:
Dienstleistungen:
- SandCastle.DAL.Context.IObjectContext which was not registered.
Ich habe alles versucht, was mir dazu einfällt. Also, ich sage Ihnen Stackoverflow-Leser: Haben Sie Ideen?