2011-03-18 43 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; 
相关问题