gpt4 book ai didi

Ninject 使用 BindToFactory 按约定绑定(bind)到具有类 T 的工厂接口(interface)

转载 作者:行者123 更新时间:2023-12-02 19:38:39 25 4
gpt4 key购买 nike

我想替换这段代码:

Kernel.Bind<ITaskFactory<AlertTask>>().ToFactory();
Kernel.Bind<ITaskFactory<PopupTask>>().ToFactory();

像这样:

Kernel.Bind(scanner => scanner.FromThisAssembly().SelectAllClasses()
.EndingWith("Task").MAGICGOESHERE().BindToFactory()

我尝试创建 IBindingGenerator,但在尝试从 T 获取 ITaskFactory 时陷入困境。

最佳答案

改用这个:

kernel.Bind(scanner => scanner
.FromThisAssembly()
.SelectAllInterfaces()
.EndingWith("Factory")
.BindToFactory());

kernel.Bind(scanner => scanner
.FromThisAssembly()
.SelectAllClasses()
.EndingWith("Task"));

var f = kernel.Get<ITaskFactory>();
var task1 = f.CreateTask<AlertTask>();
var task2 = f.CreateTask<PopupTask>();

public class AlertTask {}
public class PopupTask { }
public interface ITaskFactory
{
T CreateTask<T>();
}

关于Ninject 使用 BindToFactory 按约定绑定(bind)到具有类 T 的工厂接口(interface),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15205115/

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