Среда
- Pytho nnet версия: 2.3.0 и 2.4.0
- Python версия: 3.6.5
- Операционная система: W10
Подробности
- У меня проблемы с устранением неоднозначности перегруженного метода C#, который имеет несколько параметров. Я обнаружил # 935 , что очень похоже на проблему в проекте GitHub, но не может заставить его работать. Я выполняю те же действия, но все равно получаю ту же ошибку.
Сторона C#
public enum MyEnum: byte
{
Success= (byte)'S',
Error = (byte)'E'
}
public class MyClass
{
public Dictionary<Enum, BlockingCollection<ISomeInterface>> MyDictionary { get; }
public MyClass()
{
MyDictionary = new Dictionary<Enum, BlockingCollection<ISomeInterface>>();
}
}
Со стороны python я начал с этого кода
from System.Collections.Concurrent import BlockingCollection
from MyModule import MyClass, ISomeInterface, MyEnum
obj = MyClass()
collection = BlockingCollection[ISomeInterface]()
obj.MyDictionary.Add(MyEnum.Success, collection)
Это не с TypeError: No method matches given arguments for Add
. Я пробовал то, что, казалось, решило это для # 935, но получило те же результаты
from System.Collections.Concurrent import BlockingCollection
from System import Enum
from MyModule import MyClass, ISomeInterface, MyEnum
obj = MyClass()
collection = BlockingCollection[ISomeInterface]()
obj.MyDictionary.Add[Enum, BlockingCollection[ISomeInterface]](MyEnum.Success, collection)
Это не удалось с TypeError: No match found for given type params
- Вывод
print(obj.MyDictionary.Add.__overloads__)
равен
Void Add(System.Enum, System.Collections.Concurrent.BlockingCollection`1[MyModule.ISomeInterface])
ОБНОВЛЕНИЕ
Запуск только этого кода на самом деле работает, add
показывает как связанный метод в отладчике:
add = obj.MyDictionary.Add[Enum, BlockingCollection[ISomeInterface]]
Однако попытка вызова функция всегда терпит неудачу. Я попытался передать System.byte
и 0
вместо перечисления, но ни один из них не сработал.
add(MyEnum.Success, collection)
obj.MyDictionary.Add[Enum, BlockingCollection[ISomeInterface]](MyEnum.Success, collection)
obj.MyDictionary.Add.Overloads[Enum, BlockingCollection[ISomeInterface]](MyEnum.Success, collect