2012-01-26 4 views
1

MEF와 Prism v4를 사용하는 경우 [Import]을 수행하는 권장 방법은 무엇이며이 두 호출간에 차이점은 무엇입니까?Mef Prism v4 - [가져 오기] vs [가져 오기 구성자]

옵션 1 :

public class TestClass 
{ 
    [Import] 
    private IRegionManager _RegionManager; 

    public TestClass() 
    { 
     // stuff here 
    } 
} 

옵션 2 :

public class TestClass 
{ 
    private IRegionManager _RegionManager; 

    [ImportingConstructor] 
    public TestClass(IRegionManger regionManager) 
    { 
     this._RegionManager = regionManager; 
     // stuff here 
    } 
} 

이들의 차이점은 무엇입니까? 어느 것이 좋습니다?

답변

2

이것은 스타일의 문제이지만 나는 필드의 Import보다 ImportingConstructor의 훨씬 더 큰 팬입니다. ImportingConstructor을 사용하면 MEF 지원을 사용할 수도 있고 사용할 수도없는 개체를 정의 할 수 있습니다. 계약은 프로그래머가 분명하고 잘 이해하고 있습니다.

한편 Import을 사용하면 수업을 MEF에서 훨씬 더 유용하게 사용할 수 있습니다. 개발자는 객체의 모든 속성을보고 생성 후 설정해야하는 객체를 결정하지 않고 객체의 생성자에 종속성을 제공하는 데 사용됩니다.

+0

좋아 덕분에, 나는 내 코드에 혼합하고 일치 된이어야한다 내가 [[ImportingConstructor]'또는'[Import]'중 하나를 선택해야한다는 것을 깨달았다. 정말로 diff가별로 없거나 프리즘이나 MEF 스타일 만있는 것은 아닙니다. 다른 사람이 그것에 대한 의견을 갖고 있는지, 내가 대답을 표시하지 않으면 :) – John

2

[가져 오기 생성자]를 사용하면 생성자에서 가져 오기에 액세스 할 수 있습니다. [가져 오기] 당신이 savely IPartImportsSatisfiedNotification.OnImportsSatisfied()에서 가져 오기에 액세스 할 수 있습니다

난 [ImportingConstructor] 추천하고 BTW 공공 분야는 민간 :)

+0

정보를 주셔서 감사합니다. 내 실제 프로그램에서 그렇습니다. 개인 정보이므로, 발견 한 사람의 게시물을 변경하겠습니다. 내가 가진 것과 똑같은 질문을했습니다. 따라서 [가져 오기]를 사용하면 생성자에서 사용할 수 없게됩니까? Lazy가로드 될 때의 차이점은 무엇입니까? – John

+0

게으른 지 여부에 상관없이 – blindmeis