网站导航栏注明做,仙桃哪里做网站,网页设计与制作课程教学大纲,出名的网站有哪些文章目录 什么是依赖注入概念常用的依赖注入实现什么是动态加载定义示例对动态加载的DLL进行依赖注入什么是依赖注入 概念 依赖注入(Dependency Injection,简称 DI)是一种软件设计模式,用于解耦软件组件之间的依赖关系。在 C# 开发中,它主要解决的是类与类之间的强耦合问题… 文章目录 什么是依赖注入概念常用的依赖注入实现 什么是动态加载定义示例 对动态加载的DLL进行依赖注入 什么是依赖注入 概念 依赖注入(Dependency Injection,简称 DI)是一种软件设计模式,用于解耦软件组件之间的依赖关系。在 C# 开发中,它主要解决的是类与类之间的强耦合问题。例如,一个类 A 依赖于另一个类 B,如果不使用依赖注入,那么在类 A 内部可能会直接实例化类 B,这就使得类 A 和类 B 紧密地耦合在一起。而依赖注入的方式是将类 B 的实例通过外部(通常是在类 A 的构造函数、属性或者方法参数中)传递给类 A,从而降低它们之间的耦合程度。
作用 提高可维护性:当系统规模变大时,如果各个组件之间耦合紧密,修改其中一个组件可能会牵一发而动全身。通过依赖注入,组件之间的依赖关系更加清晰,维护起来更加容易。 方便单元测试:在进行单元测试时,可以方便地模拟依赖对象,而不是依赖于真实的复杂对象,从而使测试更加简单和准确。常用的依赖注入实现
Microsoft.Extensions.DependencyInjectionusing Microsoft.Extensions.DependencyInjection;
class MyClassA
{private MyClassB _dependency;public MyClassA(MyClassB dependency){_dependency = dependency;}public void DoSomething()=_dependency.SomeMethod();
}
class MyClassB
{public void SomeMethod()=Console.WriteLine("MyClassB's method is called.");
}
class Program
{static void Main(){// 创建服务容器var serviceCollection = new ServiceCollection();// 注册MyClassB为服务,每次请求MyClassB时会创建一个新的实例serviceCollection.AddTransientMyClassB();// 注册MyClassA为服务,并且注入MyClassBserviceCollection.AddTransientMyClassA();// 构建服务提供器var serviceProvider = serviceCollection.BuildServiceProvider();// 获取MyClassA的实例,此时会自动注入MyClassB的实例var a = serviceProvider.GetServiceMyClassA();a.DoSomething();}
}Autofacusing Autofac;
class MyClassA
{private MyClassB _dependency;public MyClassA(MyClassB dependency){_dependency = dependency;}public void DoSomething