2016-09-28 79 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

相关问题