gpt4 book ai didi

c# - 如何在 CaSTLe Windsor 中自动注册(按照惯例)通用装饰器

转载 作者:太空宇宙 更新时间:2023-11-03 10:31:17 25 4
gpt4 key购买 nike

我是 CaSTLe Windsor 的新手,我想知道是否有人可以帮助我以通用方式注册以下组件,以便自动注册我的所有命令。以及如何添加装饰器。

编辑:以下似乎有效,但我对如何配置装饰器感到困惑。

        WindsorContainer container = new WindsorContainer();

container
.Register(
Classes.FromAssemblyInThisApplication()
.BasedOn(typeof(ICommand))
.LifestyleTransient());

public interface ICommand
{
}

public interface ICommandArgs
{
}

public interface ICommand<TArgs> : ICommand where TArgs : ICommandArgs
{
void Execute(TArgs args);
}

public class ChangePasswordArgs : ICommandArgs
{
public ChangePasswordArgs()
{
}
}

public class ChangePasswordCommand : ICommand<ChangePasswordArgs>
{
public void Execute(ChangePasswordArgs args)
{
Console.WriteLine("[CHANGING PASSWORD]");
}
}
public class TransactionCommand<TArgs> where TArgs : ICommandArgs
{
private readonly ICommand<TArgs> innerCommand;

public TransactionCommand(ICommand<TArgs> innerCommand)
{
this.innerCommand = innerCommand;
}

public void Execute(TArgs args)
{
this.innerCommand.Execute(args);
}
}

编辑:这是我目前所在的位置,但装饰器未正确解析:

       container.Register(
Component.For(typeof(ICommand<>))
.ImplementedBy(typeof(TransactionalCommand<>))
.LifestyleTransient(),
Classes.FromAssemblyInThisApplication()
.BasedOn(typeof(ICommand<>))
.WithService.AllInterfaces()
.LifestyleTransient()
);

最佳答案

Herehere是关于城堡、自动注册(按照惯例)和装饰器的所有主题的列表。 Thisthis是很好的例子。如果您尝试先搜索问题并四处阅读,那么您的工作效率会更高,因为它早已得到解答。一本关于 .NET 中的 IoC 和 CaSTLe 的好书是 this one马克西曼。这本书展示了许多城堡的例子。您也可以查看他的博客。

关于c# - 如何在 CaSTLe Windsor 中自动注册(按照惯例)通用装饰器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30109591/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com