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

时间:2015-01-06 12:00:12

标签: c# 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>();

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

1 个答案:

答案 0 :(得分:3)

  • 配置:
    • Pro:你可以改变它而无需重新编译。
    • Con:没有静态输入。类型或接口名称中的拼写错误直到运行时才会被忽视。
  • 代码:
    • Pro:静态输入。无法使用未知或不兼容的类型进行编译。
    • Con:无需重新编译就无法改变它。