내가 여러 메타 데이터 옵션 유형 Foo
을 내보낼 원인 true
으로 설정하면 메타 데이터에는 실제로 원래 메타 데이터의 속성 배열이 포함되므로이 형식으로이 유형을 가져옵니다.사용자 정의 MEF ExportAttribute은 = 사실은 중복
public interface IFooMultiMeta
{
string[] Name { get; }
string[] Version { get; }
}
public class Program
{
[ImportMany]
public List<Lazy<IFoo, IFooMultiMeta>> Foos { get; set; }
private static void Main()
{
new Program().MainInternal();
}
private void MainInternal()
{
new CompositionContainer(new AssemblyCatalog(Assembly.GetExecutingAssembly())).ComposeParts(this);
foreach (Lazy<IFoo, IFooMultiMeta> lazyFoo in Foos)
for (int i = 0; i < lazyFoo.Metadata.Name.Length; i++)
Console.WriteLine("* {0} {1}", lazyFoo.Metadata.Name[i], lazyFoo.Metadata.Version[i]);
Console.WriteLine(Equals(Foos[0].Metadata, Foos[1].Metadata));
Console.ReadKey();
}
}
Foo
의 인스턴스 하나에 3 개의 값이 포함 된 메타 데이터가 포함될 것으로 예상됩니다. 그러나 나는 이것을 가지고있다 :
* Baz 2.0
* Baz 1.0
* Bar 1.0
* Baz 2.0
* Baz 1.0
* Bar 1.0
* Baz 2.0
* Baz 1.0
* Bar 1.0
False
더 나쁜 것은 메타 데이터 인스턴스가 다르기 때문에 중복을 올바르게 필터링 할 수 없다.
질문 : 하나의 클래스를 메타 데이터 속성의 여러 조합을 만족시키는 것으로 올바르게 내보내려면 어떻게해야합니까?
전체 샘플 : http://pastebin.com/WyjN95gr
특성이 내보내기 및 메타 데이터 특성이기 때문에 이름/버전 쌍이 여러 번 사용됩니다. 세 가지 내보내기 각각에 대해 세 가지 속성의 값도 메타 데이터로 가져옵니다. – Matt
@Matt Excellent! 설명 주셔서 감사합니다. –