2016-09-28 46 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.Net.IPAddress]的屬性值轉換爲所需的類型[System.Int64]財產'。

IPEndPoint有兩個構造函數:

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

看來,Spring使用第一個構造函數實際上是一個壞主意。

那麼我該如何告訴spring應該使用第二個構造函數呢?

更新:

我想通了如何將ip地址轉換爲長:

<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

謝謝你,你是對的,我會直接問微軟的傢伙。我只是想,因爲有這樣的相關問題:https://stackoverflow.com/questions/779604/is-a-separate-visual-studio-license-required-for-a-build-machine我可以得到答案太。 – Portikus

+1

你可以在這裏得到答案。也許甚至完全正確的答案。但他們仍然會超出網站的範圍......所以我同意:最好問MS的人。當他們你有什麼問題...然後他們做到了;-) – GhostCat

相關問題