1
2 개의 메타 데이터 항목을 지정하는 Autofac을 사용하려고합니다. 그러나이 두 항목을 모두 지정하여 서비스를 검색하는 방법에 대해서는 명확하지 않습니다. 어셈블리 이름과 버전에 대한 메타 데이터 항목이 있습니다. 등록 조각은 다음과 같다 : 클래스의 costructor 또는를 해결하는 클래스Autofac과 WithMetadata 할당을 여러 개 사용하는 중
IEnumerable<Lazy<IPlugin, IMetaDataName>>
: 내가 찾을 수
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)
유일한 문서와 예제 내가이 구문을 사용할 수 있도록 지정 봉사 후에.
Get the service that has the MetaDataName == "Service1" AND MetaDataVersion == "1.4"
은 현재 내가 작동하지만 투박한 느낌 (1 개) 메타 데이터 유형에 대해 함께 두 연결된 한 : 내가 후 나는 나를 다음을 수행 할 수 있도록하는 메커니즘입니다. 이것에 대한 더 나은 접근법이 있습니까?
감사합니다.
크레이그.
안녕하세요 Nicholas, 답장을 보내 주셔서 감사합니다. 내가 한 일은 이름과 버전의 문자열을 메타 데이터 인터페이스의 한 속성 (Name_Version 형식)으로 연결하고 수신기 생성자의 종속성으로 사용합니다. 그것은 효과가 있으며, 프로젝트를 계속할 필요가 있습니다.하지만 나중에 다시 돌아가서 내가 원하는 것에 더 가깝게 만들 수 있는지 알아볼 것입니다. Autofac에 대한 모든 작업을 해주셔서 감사합니다. – Craig