为了在我的所有开发中设置统一标准,我创建了一个核心库。主要功能之一是将 Action<...> 发送到基于 Autfac 的依赖注册器。我想搬到ninject。
我目前坚持提供绑定密钥(id)并将参数集合发送到绑定。
Autofac代码是:
public void AddComponentWithParameters(Type service,
Type implementation, IDictionary<string, string> properties,
string key = "")
{
UpdateContainer(x =>
{
var serviceTypes = new List<Type> { service };
var temp = x.RegisterType(implementation)
.As(serviceTypes.ToArray())
.WithParameters(properties
.Select(y => new NamedParameter(y.Key, y.Value)));
if (!string.IsNullOrEmpty(key))
{
temp.Keyed(key, service);
}
});
}
ninject 代码:
public void AddComponentWithParameters(Type service,
Type implementation,
IDictionary<string, string> properties, string key = "")
{
UpdateContainer(x =>
{
var serviceTypes = new List<Type> { service };
var temp = x.Bind(serviceTypes.ToArray())
.To(implementation)
problem 1====>.WithParameters(properties
.Select(y => new NamedParameter(y.Key, y.Value)));
if (!string.IsNullOrEmpty(key))
{
problem 2====> temp.Keyed(key, service);
}
});
}
这个想法基于 nopCommerce DI 管理。