内部サービス用に複数のコンテナーをサポートしようとしているオープン ソース プロジェクトに貢献しています。サポートされているコンテナーの要件の 1 つは、登録の順序が重要であることです。そのため、インターフェイスの複数の実装が特定の順序で登録されている場合、それらのサービスのリストが解決されると、実装は登録されたのと同じ順序で返される必要があります。
var builder = new ContainerBuilder();
builder.RegisterType<PreferredService>().As<IService>();
builder.RegisterType<AlternativeService>().As<IService>();
builder.RegisterType<AdditionalService>().As<IService>();
...
// Get the first (preferred) implementation of IService.
var possibleServices = container.Resolve<IEnumerable<IService>>();
IService idealServiceImplementation = possibleServices.FirstOrDefault();
私のテストでは、Autofac がサービスを逆順で返すことが示されています。これは常に当てはまりますか?毎回逆の順序で解決されると信頼できますか? この動作は、異なるインターフェイスの他の登録の後にいくつかの後のサービスを登録した場合でも一貫していますか? リストの Resolve への暗黙的な呼び出しをインターセプトできますか?
登録順序が重要であることをAutofacに指示する方法はありますか?