通过代码或配置注入依赖的优缺点
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>();
我想知道这两种方法的优缺点。
- 配置:
- 专业版:您可以更改它而无需重新编译。
- 缺点:没有静态类型。类型或接口名称中的拼写错误直到运行时才会被注意到。
- 代码:
- 专业版:静态类型。无法使用未知或不兼容的类型进行编译。
- 缺点:必须重新编译才能更改它。
我知道 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>();
我想知道这两种方法的优缺点。
- 配置:
- 专业版:您可以更改它而无需重新编译。
- 缺点:没有静态类型。类型或接口名称中的拼写错误直到运行时才会被注意到。
- 代码:
- 专业版:静态类型。无法使用未知或不兼容的类型进行编译。
- 缺点:必须重新编译才能更改它。