使用 Ninject IOC 替换工厂

2024-03-27

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

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

kernel.Get<ITokenHandler>(tokenName); 

但这并不能节省我在两个位置存储有关处理程序可以处理的令牌的信息。有没有办法可以装饰处理程序以便自动映射?


如果我正确地理解了你的问题,听起来你想检索一个命名绑定。您没有提到您正在使用的 Ninject 版本,但根据您的代码片段,我猜测您正在使用 Ninject 2.0。如果是这种情况,那么我认为这足以满足您在模块中的绑定:

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

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

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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 Ninject IOC 替换工厂 的相关文章

随机推荐