通过代码或配置注入依赖项的利弊

本文关键字:依赖 注入 代码 配置 | 更新日期: 2023-09-27 18:36:19

我知道结构图用于C#中的IoC。它可以通过两种方式挂钩。通过配置:

ObjectFactory.Initialize(x =>
{
      x.UseDefaultStructureMapConfigFile = true;
});
<StructureMap>
    <DefaultInstance PluginType="XXXXXXX, YYYYYY" PluggedType="AAAAA,BBBBB" Scope="PerRequest" />
</StructureMap>

从代码中,如下所示:

ObjectFactory.Initialize(x =>
{
     x.UseDefaultStructureMapConfigFile = false;
     x.AddRegistry<StructureMapRegistry>();
});
HttpContextLifecycle cycle = new HttpContextLifecycle();
For<IDataRepository<MethodName>>().LifecycleIs(cycle).Use<MethodName>();

我想知道这两种方法的优缺点是什么。

通过代码或配置注入依赖项的利弊

  • 配置:
    • 优点:您可以更改它而无需重新编译。
    • 缺点:没有静态类型。类型或接口名称中的拼写错误在运行时之前可能不会被注意到。
  • 法典:
    • 优点:静态类型。无法使用未知或不兼容的类型进行编译。
    • 缺点:如果不重新编译,就无法更改它。