0
這裏是我的Installer.cs:ComponentNotFoundException城堡溫莎
class Installer : IWindsorInstaller
{
public void Install(IWindsorContainer container, IConfigurationStore store)
{
container
.Register(Component.For<IDbContext>()
.ImplementedBy<ApplicationDbContext>()
.LifeStyle.PerThread
);
container
.Register(Component.For(typeof(IRepository<>))
.ImplementedBy(typeof(Repository<>))
.LifeStyle.PerThread
);
container
.Register(Component.For<IServiceReadCity>()
.ImplementedBy<ServiceReadCity>()
.LifeStyle.PerThread
);
}
}
這裏是我的Program.cs:
SqlServerTypes.Utilities.LoadNativeAssemblies(AppDomain.CurrentDomain.BaseDirectory);
System.Data.Entity.SqlServer.SqlProviderServices.SqlServerTypesAssemblyName = "Microsoft.SqlServer.Types, Version=12.0.0.0, Culture=neutral, PublicKeyToken=898989899898989898";
var container = new WindsorContainer();
container.Install(FromAssembly.This());
IServiceReadCity _cityReadService = container.Resolve<IServiceReadCity>();
var cities = _cityReadService.GetListQuery();
這是控制檯應用程序。我得到這個異常:
{ 「支持服務 Reveal.Domain.Location.Service.Read.IServiceReadCity沒有發現分量」} 在這行:
IServiceReadCity _cityReadService = container.Resolve<IServiceReadCity>();
燦你告訴我我做錯了什麼,以及如何解決這個問題?謝謝。
你斷點您的安裝程序,以確保它實際運行的問題?您還可以在調試過程中檢查容器,以檢查哪些服務已註冊,以及哪些實施正在支持它們。 – Charleh
@Charleh我給安裝程序放了一個斷點,我發現它沒有運行。我怎樣才能使它工作?謝謝。 – jason
您可能需要將安裝程序設置爲「公共」。我想像Windsor會掃描程序集中的公共類型實現'IWindsorInstaller'接口。可能溫莎不運行它,因爲它無法找到它。 – Charleh