Обобщения C# с параметрами типа IronPython

Итак, ситуация у меня есть универсальный класс C# с именем Foo с параметром шаблона T который имеет new() ограничение. Я объявил мои классы примерно так:

class Baz
{
    public Baz() { }
}

class Foo<T>
    where T : Baz, new()
{
    // blah blah
}

И в Python:

class Bar(Baz):
    def __init__(self):
        """ do various things here """

Однако, если в Python я пытаюсь сделать Foo[Bar]Я получаю сообщение об ошибке, сообщающее, что мой Bar класс нарушает ограничения (а именно new() ограничение) на Foo<T>,

Что дает?

1 ответ

Решение

Там нет конструктора по умолчанию для объектов IronPython. Они должны нести некоторое дополнительное изменяемое состояние с собой, тип Python, который должен быть предоставлен при создании экземпляра класса. Этот тип используется для разрешения любых виртуальных перегрузок и других методов при динамическом вызове.

Другие вопросы по тегам