2
MEF에서 ImportMany에 대한 사용자 지정 메타 데이터 특성을 만들었지 만 ImportMany는 항상 null입니다.ImportMany가 사용자 지정 메타 데이터 특성과 작동하지 않습니다.
[MetadataAttribute]
[AttributeUsage(AttributeTargets.Class ,AllowMultiple = false)]
public class ModuleAttribute : ExportAttribute ,IModuleMetadata
{
public ModuleAttribute(string contract)
: base(typeof(IScreen))
{
Name = contract;
Region = Region.Sidebar;
IsVisible = true;
}
public string Name { get; set; }
public string Module { get; set; }
public Region Region { get; set; }
public string DisplayName { get; set; }
public bool IsVisible { get; set; }
public string Description { get; set; }
public short Order { get; set; }
public Permissions Permissions { get; set; }
}
내 수업을 내보내는 방법은 다음과 같습니다. 화면 여기 typeof(IScreen)
입니다
[Module("Stock" ,Module = "Stock" ,Order = 1 ,Permissions = Permissions.View)]
internal sealed class StockWorkSpaceViewModel : Screen
내 ImportMany입니다.
[ImportMany]
public IEnumerable<Lazy<IScreen ,IModuleMetadata>> Modules { get; set; }
어디서 잘못 될지 예측할 수 있습니다.
IModuleMetadata 선언을 추가 할 수 있습니까? 일치하는 읽기 전용 속성이 있습니까? –
어제 저는 클래스에서 기본 생성자를 제거 할 때 가져올 수있었습니다. 클래스에 일부 코드가있는 매개 변수없는 생성자가있는 경우 가져 오기가 작동하지 않습니다. 또한 계약 이름을 내보내기에서 삭제해야합니다. 즉, 계약 유형으로 내보내기해야합니다. –
Settings라고하는 다른 사용자 지정 내보내기도 있었지만 이제 ImportMany는 ModuleExport의 형식을 포함합니다. 나는 이유를 모른다. 둘 다 메타 데이터 인터페이스가 다르지만 계약 유형은 동일합니다. –