2016-09-28 9 views
1

Spring.Net을 사용하여 System.Net.IPEndPoint을 인스턴스화하려고합니다. 여기 내 XML 코드 :Spring.Net에서 같은 양의 매개 변수를 가진 많은 생성자가있는 유형을 인스턴스화하는 방법

<object id="MulticastAddress" type="System.Net.IPAddress" factory-method="Parse"> 
    <constructor-arg value="239.239.239.1"/> 
</object> 
<object id="DestinationEndPoint" type="System.Net.IPEndPoint"> 
    <constructor-arg name="address" ref="MulticastAddress"/> 
    <constructor-arg name="port" value="2010"/> 
</object> 

하지만이 추가 정보와 함께 Spring.Core.TypeMismatchException가 발생합니다 ''[System.Int64] 속성에 필요한 유형 [System.Net.IPAddress] 유형의 속성 값을 변환 할 수 없습니다.

public IPEndPoint(long address, int port); 
public IPEndPoint(IPAddress address, int port); 

그 봄이 실제로 나쁜 생각 첫 번째 생성자를 사용하는 것 같다

IPEndPoint로는 두 개의 생성자가 있습니다.

그래서 스프링에 두 번째 생성자를 사용해야한다고 어떻게 알 수 있습니까?

업데이트 : 긴으로하여 IPAddress를 변환하는 방법을 알아 냈

:

<object id="DestinationEndPoint" type="System.Net.IPEndPoint"> 
    <constructor-arg name="address" expression="T(System.Net.IPAddress).Parse('239.239.239.1')"/> 
    <constructor-arg name="port" value="2010"/> 
</object> 

하지만 지금은 예외를 가지고 : 유형의 속성 값을 변환 할 수 없습니다 [System.Int64] 속성 ''에 대해 필수 형식 [System.Net.IPAddress]로 변경하십시오.

이제 스프링이 다른 생성자를 사용하는 것 같습니다. 그것은 무엇입니까!?

답변

1

나는 내 자신으로 해결책을 찾았습니다. Spring.Net은 생성자가 전달 된 인수에 맞지 않는 경우이 예외를 던집니다. 그러나 Spring.Net은 나중에이 예외를 잡아 내고 다음 생성자를 시도합니다. 그래서 내 문제는 VisualStudio에게이 예외에 의해 깨져서는 안된다고 말해야한다는 것이 었습니다.

+0

감사합니다. 그렇습니다. Microsoft에서 직접 물어볼 것입니다. 나는 단지 여기에 관련 질문이 있기 때문에 생각했다 : https://stackoverflow.com/questions/779604/is-a-separate-visual-studio-license-required-for-a-build-machine 나는 대답을 얻을 수 있었다. 너무. – Portikus

+1

여기에서 답을 얻을 수 있습니다. 어쩌면 완벽하게 정답 일 수도 있습니다. 그러나 그들은 여전히 ​​사이트의 범위 밖에있을 것입니다 ... 그래서 동의합니다 : MS에 더 잘 물어보십시오. 그들은 당신이 뭔가 잘못했을 때 ... 그랬지 ;-) – GhostCat