如何在 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 它不应该被这个异常打破 -_-.