如何在 Spring.Net 中用相同数量的参数实例化具有许多构造函数的类型
How to instantiate a type with many constructors with the same amount of parameters in Spring.Net
我想用 Spring.Net 实例化一个 System.Net.IPEndPoint
。
这是我的 xml 代码:
<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 它应该使用第二个构造函数?
更新:
我想出了如何将 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 似乎使用了另一个构造函数。这是什么!?
我自己找到了解决方案。如果构造函数不适合传递的参数,Spring.Net 将抛出此异常。但是 Spring.Net 稍后会捕获此异常并尝试下一个构造函数。所以我的问题是我必须告诉 VisualStudio 它不应该被这个异常打破 -_-.
我想用 Spring.Net 实例化一个 System.Net.IPEndPoint
。
这是我的 xml 代码:
<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 它应该使用第二个构造函数?
更新:
我想出了如何将 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 似乎使用了另一个构造函数。这是什么!?
我自己找到了解决方案。如果构造函数不适合传递的参数,Spring.Net 将抛出此异常。但是 Spring.Net 稍后会捕获此异常并尝试下一个构造函数。所以我的问题是我必须告诉 VisualStudio 它不应该被这个异常打破 -_-.