다른 게시물에서이 검색을 시도했지만 답변을 찾을 수 없어 새로운 질문을 만들었습니다.MEF - 모든 가져 오기에 내보내기가 필요합니까?
ETL 시스템을 구축 중입니다. 이제
I가 다음과 같은 수입이있는 클래스 :
[Import]
public IDataExtractor DataExtractor { get; set; }
[Import]
public IDataTransformer DataTransformer { get; set; }
[Import]
public IDataValidator DataValidator { get; set; }
[Import]
public IDataPublisher DataPublisher { get; set; }
[Import]
public IDataUpdater DataUpdater { get; set; }
내 program.cs 컴포지션 다음과 같은 코드가 있습니다 ConfigKeys은 [] 내 설정 관리
var catalog = new AggregateCatalog();
if (!string.IsNullOrEmpty(ConfigKeys["Extractor"]))
catalog.Catalogs.Add(new DirectoryCatalog(ConfigKeys["Extractor"]));
if (!string.IsNullOrEmpty(ConfigKeys["Transformer"]))
catalog.Catalogs.Add(new DirectoryCatalog(ConfigKeys["Transformer"]));
if (!string.IsNullOrEmpty(ConfigKeys["Validator"]))
catalog.Catalogs.Add(new DirectoryCatalog(ConfigKeys["Validator"]));
if (!string.IsNullOrEmpty(ConfigKeys["Publisher"]))
catalog.Catalogs.Add(new DirectoryCatalog(ConfigKeys["Publisher"]));
if (!string.IsNullOrEmpty(ConfigKeys["Updater"]))
catalog.Catalogs.Add(new DirectoryCatalog(ConfigKeys["Updater"]));
var container = new CompositionContainer(catalog);
container.ComposeParts(this);
입니다 시스템, 여기서 지정할 수있는 각 추출기, 변환기, Validator 등의 dll 경로입니다.
전체 프로세스 i s : 추출, 변환, 검증, 게시, 업데이트.
특정 시간은 실행될 3 가지 기능인 추출, 변환, 게시입니다. Config 시스템에 Validator dll의 경로가 없다면 IDataValidator 인터페이스의 인스턴스를 원하지 않습니다. 그러나 공백을 지정하면 작성 중에 오류가 발생합니다.
오류 : 구성은 변경되지 않습니다. 변경 내용은 다음 오류로 인해 거부되었습니다. 구성에서 여러 가지 구성 오류가 발생했으며 4 가지 원인이 있습니다. 근본 원인은 아래에 제공됩니다. 자세한 내용은 CompositionException.Errors 속성을 검토하십시오. "컴포지션에서 단일 구성 오류가 발생했습니다. 근본 원인은 아래에 나와 있습니다. 자세한 내용은 CompositionException.Errors 속성을 검토하십시오. \ r \ n \ r \ n1) 제약 조건과 일치하는 내보내기를 찾을 수 없습니다 : \ n \ tContractName \ tCTP.DCU.Models.Interfaces.IDataTransformer \ n \ tRequiredTypeIdentity \ tCTP.DCU.Models.Interfaces.IDataTransformer \ r \ n "
내 질문은 : 모든 가져 오기에 대해 내가 내보내기가 없을 수 있습니다. 그 것을 우아하게 다루기 위해서. MEF에서 그렇게 할 수있는 방법이 있습니까? 이 시나리오를 어떻게 처리 할 수 있습니까? 대체를 위해 빈 더미 스텁을 만드는 것을 생각했지만 실제로 모든 사람들이하는 일이 무엇입니까?
감사합니다. 당신이 [Import]
선택 사항 확인하려면
아름다움 ...... Thx @Porges – jaxxbo