文章

依赖注入

依赖注入是一种消除类之间依赖关系的设计模式,它使客户端不在需要new依赖的对象,而是依靠Ioc容器将客户端的依赖通过构造函数或者属性的方式注入。

使用依赖注入的优点

  • 遵循了控制反转的设计原则,上层不依赖于底层,而是依赖于抽象。减少了项目之间的耦合。
  • 项目灵活性更高,应对业务变更可以快速修改。
  • 减少代码量。

简易代码实现

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
public static class IocUtil
{
    public static T GetService<T>() where T : class
    {
        return (GetService(typeof(T)) as T)!;

    }

    private static object GetService(Type type)
    {
        var constructors = type.GetConstructors();
        if (constructors == null || constructors.Length == 0)
        {
            throw new Exception("no public constructor");
        }
        var constructor = constructors.OrderByDescending(x => x.GetParameters().Length).First();

        var parameterInfos = constructor.GetParameters();

        var parameters = new List<object>();

        foreach (var parameterInfo in parameterInfos)
        {
            parameters.Add(GetService(parameterInfo.ParameterType));
        }

        var obj = constructor.Invoke(parameters.ToArray());
        return obj;
    }
}
本文由作者按照 CC BY 4.0 进行授权