gpt4 book ai didi

c# - 使用 Ninject IOC 替换一个工厂

转载 作者:可可西里 更新时间:2023-11-01 07:57:18 25 4
gpt4 key购买 nike

我在解析器中有一个工厂方法。本质上,当我加载一个 token 时,我会查找该 token 的处理程序,或者转到默认处理程序。我已经将其实现为 switch作为Dictionary<string,Type>但是这两种方法都要求我将映射存储在处理程序类之外的其他地方。

我们正在为 IOC 使用 Ninject,所以我意识到我也可以使用

kernel.Get<ITokenHandler>(tokenName); 

但这并不能节省我在 2 个位置存储有关处理程序可以处理的 token 的信息。有没有一种方法可以修饰处理程序,使其自动映射?

最佳答案

如果我没听错你的问题,听起来你想要检索命名绑定(bind)。您没有提到您使用的是哪个版本的 Ninject,但根据您的代码片段,我猜您使用的是 Ninject 2.0。如果是这样,那么我认为这足以满足您在模块中的绑定(bind):

Bind<ITokenHandler>().To<YourConcreteTypeHere>().Named(tokenName);

您将尽可能多的具体类型绑定(bind)到同一接口(interface)并按名称区分它们,然后使用您在问题中指定的精确语法检索它们。

如果我遗漏了一些关键信息,请告诉我。

关于c# - 使用 Ninject IOC 替换一个工厂,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2099092/

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