通过代码或配置注入依赖的优缺点

Pros and cons of injecting dependencies through code or configuratoin

我知道 structuremap 用于 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>();

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

  • 配置:
    • 专业版:您可以更改它而无需重新编译。
    • 缺点:没有静态类型。类型或接口名称中的拼写错误直到运行时才会被注意到。
  • 代码:
    • 专业版:静态类型。无法使用未知或不兼容的类型进行编译。
    • 缺点:必须重新编译才能更改它。