У меня есть некоторый код 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 для принудительного использования другой перегрузки, он выполняется правильно. Кто-нибудь знает, где я иду не так?