Я пытаюсь использовать Autofac, указав 2 элемента метаданных.Кажется, что они добавляют эти штрафа, однако я не слишком понимаю, как получить службу, указав оба этих элемента.У меня есть элементы метаданных для имени сборки и версии.Фрагмент регистрации выглядит следующим образом:
builder.RegisterAssemblyTypes(assembly).Where(
t => t.GetInterfaces().Any(i =>
plugin.Interface == i.Name)).As<IPlugin>()
.WithMetadata<IMetaDataName>(m => m.For(pn => pn.Name, name)
.WithMetadata<IMetaDataVersion>(m => m.For(pn => pn.Version, version)
Единственная документация и примеры, которые я могу найти, указывают, что я могу использовать этот синтаксис:
IEnumerable<Lazy<IPlugin, IMetaDataName>>
в конструкторе класса или вкласс, который разрешает службу, которую я после.Что мне нужно, так это механизм, позволяющий мне делать следующее:
Get the service that has the MetaDataName == "Service1" AND MetaDataVersion == "1.4"
В настоящее время я объединил их вместе для одного типа метаданных, который работает, но кажется неуклюжим.Есть ли лучший подход к этому?
Спасибо
Крейг.