2016-09-28 13 views
1

Я хочу создать экземпляр System.Net.IPEndPoint с Spring.Net. Вот мой 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.Net.IPAddress] для требуемого типа [System.Int64] свойства ".

IPEndPoint имеет два конструктора:

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

Это кажется, что весна использует первый конструктор, который на самом деле плохая идея.

Итак, как я могу сказать весне, что он должен использовать второй конструктор?

Update:

Я понял, как превратить 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] для свойства ''.

Теперь кажется, что Spring использует другой конструктор. Что это!?

ответ

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