Вот мой 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>();
Может вы говорите мне, что я делаю неправильно, и как это исправить? Благодарю.
ли вы BreakPoint установщик, чтобы убедиться, что он на самом деле работает? Вы также можете проверить контейнер во время отладки, чтобы проверить, какие службы зарегистрированы и какие реализации поддерживают их. – Charleh
@Charleh Я установил точку останова для установщика, и я вижу, что он не запускается. Как я могу заставить его работать? Благодарю. – jason
Возможно, вам нужно сделать свой установщик 'public'. Я бы предположил, что Windsor просматривает сборку для публичных типов, реализующих интерфейс 'IWindsorInstaller'. Вероятно, Виндзор не работает, потому что он не может его найти. – Charleh