1
我将应用程序从Ninject迁移到Autofac。Autofac - 通过参数名称解析
我们使用了一个特殊的命名约定注入应用程序设置为构造函数:
public class Example{
public Example(AppSetting settingName){
...
}
}
AppSetting参数使用ConfigurationManager.AppSettings [ “settingName”]自动注入。
在Ninject这是通过使用自定义提供商来完成:
public class AppSettingProvider : Ninject.Activation.IProvider
{
public object Create(IContext context)
{
var varName = ((Context)context).Request.Target.Name;
var value = new AppSetting(ConfigurationManager.AppSettings[varName]);
if (value.Value == null)
{
... log ...
}
return value;
}
public Type Type
{
get { return typeof(AppSetting); }
}
}
我没能找到在Autofac此功能的替代品。如果这是不可能的自动化方式,我可以在初始配置步骤循环所有应用程序设置。
不知道该怎么办?
感谢, Vilem
你可能会想使用这两个名称匹配的'ResolvedParameter' *和*型,而不仅仅是一个'NamedParameter'。通过匹配名称和类型,可以避免在一个类中具有“AppSetting myValue”并且在另一个类中具有“IValue myValue”(具有相同名称但不同类型的依赖项)的问题。 – 2014-09-05 15:00:32
谢谢!这不仅是一个很好的建议,而且指出ResolvedParameter类让我得到了一个更好的解决方案,这正是我想要的。更新了答案。 – 2014-09-05 18:07:58