2010-07-21 11 views
2

내가이 다음 않았다 실패 해결윈저 성 사전 <>

public class BusinessService : IDecisionFilter 
{ 
    private readonly Dictionary<string, string> _ServiceDictionary; 

    public BusinessService(IOtherInterface otherService, Dictionary<string, string> serviceDictionary) 
    { 
        _OtherService = otherService, 
     _ServiceDictionary = serviceDictionary; 
    } 
    } 

그런 성이 사전 구성 요소를 해결할 수 :

을 실패 : NotImplementedException 메서드 또는 연산이 구현되지 않습니다. 실패 : Castle.MicroKernel.SubSystems.Conversion.GenericDictionaryConverter.PerformConversion (문자열 값, 유형 TARGETTYPE)

에서하지만 다른 클래스를 만드는 경우 :

은 원래 사전 대신에
public class DictiornayType : Dictionary<string, string> 
{ 
} 

, 모든 것이 제대로 해결 .

제네릭 유형과 관련이 있습니까?

알려 주시기 바랍니다.

+0

사전에 무엇이 있습니까? BusinessService가 그것으로 무엇을합니까? –

답변

3

사실 사전은 실제로는 component/service이 아닙니다. 일부 구성 요소/서비스에 대한 매개 변수입니다. 그래서 당신은 단지 사전 등록을 제거하고 등록의 비지니스 서비스 구성 요소에 대한 매개 변수로 사전 인스턴스를 전달할 수 있습니다

container.Register(Component.For<IDecisionFilter>() 
          .ImplementedBy<BusinessService>() 
          .DependsOn(new { 
           serviceDictionary = ServiceDictionaryInstance 
          })); 

는 윈저의 향후 버전에 대한 몇 가지 이야기에 대한 removing this difference between parameters and services 있습니다.

관련 문제