2010-03-31 6 views
3

문자열 매개 변수 중 하나를 빈 문자열로 허용하려면 어떻게합니까? 나도 아무것도 또는 단일 공간을하려고하지 않을 때Castle Windsor : 매개 변수 값을 빈 문자열로 설정

나는 (이름 변경)이 오류가 발생합니다 :

은 'test.User'(MyNamespace.MyObject)에 대한 비 선택적인 종속성을 확인할 수 없습니다. 매개 변수 'userName'type 'System.String'

답변

6

공백으로 두려는 매개 변수를 사용하지 않는 생성자를 추가하는 것이 훨씬 쉽고 가능성이 더 많습니다. 입니다.

2
container.Register(
    Component.For<Foo>() 
     .DependsOn(new 
     { 
     someString = string.Empty 
     })); 

그러나 우선 무엇을 빈 문자열로 종속성을 설정 하시겠습니까? 나 한테 해킹하는 것 같은 기분이야.

+0

나는 왜 내가 비어있는 채로 남기고 싶은 매개 변수를 제외하는 또 다른 생성자를 추가 할 수 있다는 것을 깨닫기 위해 이것을하기를 원했던 이유를 타이핑하고 있었다. 해킹에 대해 나를 부른 것에 대해 +1했다. –

+0

예. 매개 변수를 명시 적으로 제외하는 추가 .ctor가 일반적으로 선호되는 솔루션입니다. –

0

이미 기본값 (null 또는 비어 있지 않은 다른 문자열)이 있으면?

<component id="emptyString" type="System.String, mscorlib" />

다음 매개 변수 노드에서 사용 : 하나 개의 솔루션 구성 요소를 만드는 것입니다

<parameters> <someStringParameter>${emptyString}</someStringParameter> </parameters>

을하지만 같은이 간단한 방법이있을한다고 보인다.

+0

작동하지 않습니다. 'string'을 컴포넌트로 사용할 수 없습니다. 그것은 이해가되지 않으며 윈저는 당신을 내버려 두지 않을 것입니다. –

+0

왜 작동하지 않는다고합니까? 나는 게시하기 전에 그것을했고, 생성자의 관련 매개 변수 값은 실제로 빈 문자열이었다. 버전에 따라 다릅니 까? Castle.Core 1.2.0.0, Castle.MicroKernel 2.1.0.0, Castle Windsor 2.1.0.0을 사용 중입니다. 더 중요한 것은, 그것이 이해가되지 않는다면 더 나은 해결책은 무엇일까요? 감사합니다. – phoog

관련 문제