gpt4 book ai didi

c# - 委托(delegate)可以注册到 CaSTLe Windsor IOC 容器吗?

转载 作者:太空宇宙 更新时间:2023-11-03 18:46:12 26 4
gpt4 key购买 nike

这可能是个愚蠢的问题,但是委托(delegate)或事件可以注册到 IOC 容器(例如 Windsor)吗?

我设想在应用程序启动时注册事件功能,实现策略模式。

我想,另一种方法是简单地将任何委托(delegate)包装在类型中以便向容器注册。

最佳答案

无需包装函数或子类函数即可在 Windsor 中注册它们。它们的工作方式与任何其他组件一样。如果你需要告诉一个Func<int>从另一个开始,使用命名组件和服务覆盖,就像任何其他组件一样。示例:

[Test]
public void Example() {
var container = new DefaultKernel();
container.Register(Component.For<Func<int>>().Instance(() => 42).Named("42"));
container.Register(Component.For<Func<int>>().Instance(() => 44).Named("44"));
container.Register(Component.For<Something>().DependsOn(ServiceOverride.ForKey("f").Eq("44")));
var s = container.Resolve<Something>();
Assert.AreEqual(44, s.I);
}

class Something {
private readonly int i;
public Something(Func<int> f) {
i = f();
}

public int I {
get { return i; }
}
}

如果您希望使用容器分离您的事件注册,只需使用 Event wiring facility .

关于c# - 委托(delegate)可以注册到 CaSTLe Windsor IOC 容器吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4263180/

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