StructureMap中的Registry
类有一个IncludeRegistry<T>() where T : Registry, new()
方法,可以在创建新的注册表实例时使用,例如:
class MyRegistry : Registry
{
public MyRegistry ()
{
IncludeRegistry<AnotherRegistry>();
//For<>(...).Use<>(...); ... etc
}
}
继承自ConfigurationExpression
的{{1}}类除此之外还有Registry
方法。
在创建容器时,我们应该选择哪些(实际)差异,以及:
AddRegistry<T>() where T : Registry, new()
我找不到StructureMap文档中差异的任何描述,所以我很感激任何见解。
答案 0 :(得分:2)
IncludeRegistry
旨在与注册表一起使用,以导入另一个注册表的内容。
Registry
中方法的XML documentation表示:
将配置从其他注册表导入此注册表
Here就是文档中的一个例子:
var registry = new Registry();
registry.IncludeRegistry<YellowBlueRegistry>();
配置容器时,配置表达式中使用 AddRegistry
。它创建(当使用泛型重载时)注册表并将配置从它导入容器。
ConfigurationExpression::AddRegistry<T>
的{{3}}说:
创建并添加T
类型的Registry对象
XML documentation就是文档中的一个例子:
var container2 = new Container(c => { c.AddRegistry<FooBarRegistry>(); });
令人困惑的是ConfigurationExpression
继承了Registry
,因此同时拥有这两种方法。
简而言之,对于容器配置(根据文档和测试用例),您应该使用:
var myContainer = new Container(conf =>
{
conf.AddRegistry<RegistryA>();
});
修改强>
杰拉米的回答是:不得不看代码。您不太可能看到任何差异 在行为方面,
AddRegistry
应该已经删除了4.我 建议您只使用IncludeRegistry