温莎城堡自动注册从两个不同的程序集?

fir*_*fly 2 castle-windsor auto-registration

    container.Register(
        AllTypes.Pick().FromAssembly(typeof (UserRepository).Assembly)
            .WithService.FirstInterface());
Run Code Online (Sandbox Code Playgroud)

当前,如果接口也位于同一程序集中,则上面的代码可以正常工作,但是如果IUserRepository来自不同的程序集,则该代码将崩溃。

是否可以从两个不同的程序集中自动注册?我在这里想念什么吗?

Mar*_*ann 5

是的,可以在不同的程序集中定义接口的地方定义自动注册。尽管使用了稍微不同的语法,但是我们做到了:

container.Register(AllTypes
    .FromAssemblyContaining<ConfigurationService>()
    .Where(t => t.Name.EndsWith("Service", StringComparison.Ordinal))
    .WithService
    .FirstInterface()
    .Configure(reg => reg.LifeStyle.PerWebRequest));
Run Code Online (Sandbox Code Playgroud)

我不能说不同的API用法是否有所不同,但我认为不会。而是,我想您导致错误的原因是,也许包含接口的程序集不可用。

检查Fusion是否可以从该应用程序中加载类型。