2011-03-18 6 views

답변

4

예, 내보내기 수에 관계없이 CreationPolicy.Shared은 유형별로 지정되며 ExportExport(typeof(IClass))의 실제 런타임 유형 결과를 의미합니다. 예를 들면 다음과 같습니다.

public interface IMyClass 
{ 
    string Name { get; set; } 
} 

[Export] 
[Export(typeof(IMyClass))] 
public class MyClass : IMyClass 
{ 
    private static int count; 

    public MyClass() 
    { 
    count++; 
    Name = "Instance " + count; 
    } 

    public string Name { get; set; } 
} 

var container = new CompositionContainer(
    new AssemblyCatalog(Assembly.GetExecutingAssembly())); 

var instance1 = container.GetExportedValue<MyClass>(); 
var instance2 = container.GetExportedValue<IMyClass>(); 

// should be true. 
bool referenceEquals = object.ReferenceEquals(instance1, instance2); 

// should also be true. 
bool nameEquals = instance1.Name == instance2.Name; 
관련 문제