アセンブリのリストを返す GetAssemblies メソッドと、ConventionBuilder を返す GetConventions というメソッドがあると仮定すると、次のようにコンテナーを構成できます。
CompositionHost container =
new ContainerConfiguration()
.WithAssemblies(
GetAssemblies(),
GetConventions())
.CreateContainer();
しかし、次のように構成することもできます。
CompositionHost container =
new ContainerConfiguration()
.WithAssemblies(GetAssemblies())
.WithDefaultConventions(GetConventions())
.CreateContainer();
質問: これら 2 つの方法の違いは何ですか?
私を投げているのは、WithDefaultConventions の「デフォルト」という言葉です。MSDN は、これが何を意味するのかをあまり明らかにしていません。メソッドが単純に WithConventions と呼ばれていた場合、私はそれを再考しなかったでしょう。
以下のメソッドの例。
GetAssembly:
private static IEnumerable<Assembly> GetAssemblies()
{
return new[]
{
typeof(FileQueue).Assembly,
typeof(LoggerExport).Assembly,
};
}
GetConventions:
private static ConventionBuilder GetConventions()
{
var conventionBuilder = new ConventionBuilder();
conventionBuilder
.ForType<OmsDbContext>()
.Export<OmsDbContext>()
.SelectConstructor(ctorInfos => ctorInfos.First())
.Shared("Boundary.UnitOfWork");
return conventionBuilder;
}