1
[Export]
[Export(typeof(IClass))
public Class : IClass
클래스 및 IClass에 대해 생성자 삽입을 사용하면 동일한 싱글턴을 기대할 수 있습니까?동일한 개체에 mef 지점으로 두 번 내보내는가?
[Export]
[Export(typeof(IClass))
public Class : IClass
클래스 및 IClass에 대해 생성자 삽입을 사용하면 동일한 싱글턴을 기대할 수 있습니까?동일한 개체에 mef 지점으로 두 번 내보내는가?
예, 내보내기 수에 관계없이 CreationPolicy.Shared
은 유형별로 지정되며 Export
및 Export(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;