2

为了在我的所有开发中设置统一标准,我创建了一个核心库。主要功能之一是将 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 管理。

4

0 回答 0