Tag: 城堡 温莎

使用Castle Windsor在基类中注入原始属性

我有以下接口定义: public interface ICommandHandler { ILogger Logger { get; set; } bool SendAsync { get; set; } } 我有多个实现ICommandHandler实现,需要解决。 当Castle Windows自动注入Logger属性时,当注入ILogger时,我无法找到一种方法来配置在创建新实例期间Windsor将SendAsync属性设置为true。 UPDATE 命令处理程序实现从基接口inheritance的通用接口: public interface ICommandHandler : ICommandHandler where TCommand : Command { void Handle(TCommand command); } 这是我的配置: var container = new WindsorContainer(); container.Register(Component .For<ICommandHandler>() .ImplementedBy()); container.Register(Component .For<ICommandHandler>() .ImplementedBy()); container.Register(Component .For<ICommandHandler>() .ImplementedBy()); Castle Windsor有什么方法可以做到这一点?

Castle Windsor – 注入IActionInvoker实施问题

我正在尝试使用本文中的方法,但我遗漏了一些东西 – 我当前在WindsorControllerFactory.GetControllerInstance中尝试解析IActionInvoker时出现错误,因为WindsorActionInvoker依赖于IWindsorContainer。 鉴于WindsorControllerFactory已经有对IWindsorContainer的引用,我可以传入该引用吗? 如果是这样 – 怎么样? 我发现的唯一例子是将值类型作为构造函数参数传递,而不是引用类型。 我觉得我错过了一些明显的东西…… 当前设置如下:在Global.asax Application_Start中我调用以下方法: protected virtual IWindsorContainer InitializeServiceLocator() { IWindsorContainer container = new WindsorContainer(); ControllerBuilder.Current.SetControllerFactory(new WindsorControllerFactory(container)); container.RegisterControllers(typeof(HomeController).Assembly); ComponentRegistrar.AddComponentsTo(container); return container; } ComponentRegistrar: public static void AddComponentsTo(IWindsorContainer container) { //add other components….. container.AddComponentLifeStyle(LifestyleType.PerWebRequest); } WindsorActionInvoker: public class WindsorActionInvoker : ControllerActionInvoker, IActionInvoker { readonly IWindsorContainer container; public WindsorActionInvoker(IWindsorContainer container) { […]

Castle Windsor – 多个接口实现

在Castle Windsor中注册组件时,我们如何将接口的特定实现绑定到依赖于该接口的组件。 我事先知道组件需要使用哪种实现方式。 例如,我基于来自几个博客和教程的代码创建了一个示例控制台应用程序。 以下是代码。 public interface IReport { void LogReport(); } public interface ILogger { string Log(); } public class FileLogger : ILogger { public string Log() { return “Logged data to a file”; } } public class DatabaseLogger : ILogger { public string Log() { return “Logged data to a database”; } } […]

Windsor LifeStyle – 每个图形的共享实例

我有两种类型的ViewModel public class ViewModelA { IService service; private ViewModelB childViewModel; public ViewModelA(IService service,ViewModelB childViewModel) { this.service = service; this.childViewModel = childViewModel; } public ViewModelB ChildViewModel { get { return childViewModel; } } } public class ViewModelB { IService serivce; public ViewModelB(IService service) { this.service = service; } } 我在Windsor Container注册了一项服务: public class Service : IService […]