【发布时间】:2012-01-26 19:29:31
【问题描述】:
我有一些 IronPython 代码正在使用以下构造函数创建 Mutex:
public Mutex( bool initiallyOwned, string name, out bool createdNew )
由于最后一个参数是 out 参数,因此您无需将其传递给方法,而是将其变为额外的返回值,如下所示:
mutex, sucess = Mutex(True, 'some_mutex')
当这段代码运行时,它会抛出一个 TypeError 说明 Mutex 对象不可迭代。由于它只返回一个值,这让我相信 IronPython 没有选择正确的重载。 Ironpython 文档说,您可以通过对方法对象使用 Overloads 方法来控制调用的确切重载。
以下代码尝试,但是,我得到一个 ValueError 指出索引超出范围:
new_mutex = Mutex.__new__.Overloads[type(True), String, type(True)]
mutex, sucess = new_mutex(Mutex, True, 'some_mutex')
如果我尝试使用 Overloads 属性来强制使用不同的重载,它会正确执行。有谁知道我哪里出错了?
【问题讨论】:
-
让构造函数具有
out参数听起来不是一个好主意。作为工厂方法会更好。 -
@JeffMercado,他在这里谈论的是
System.Threading.Mutex的构造函数——他根本不拥有该构造函数的签名设计。
标签: .net ironpython