После еще нескольких исследований я нашел обходной путь.Чтение этой статьи о наследовании от универсальных классов проливает некоторый свет на то, что происходит за кулисами, особенно это объяснение:
Closed Construct generic - это термин, используемый для обозначениясценарий, в котором подкласс не является универсальным, а базовый класс параметризован как конкретный тип.
public class SubClass : BaseClass<int> {...}
Универсальный Open Construct - это термин, используемый для обозначения сценария, в котором базовый и подкласс параметризован как универсальный тип.
public class SubClass<T> : BaseClass<T> {...}
Согласно этому, то, что я пытаюсь сделать в моем первоначальном посте (наследуя от ObservableCollections
и BindingLists
), относится ко второй форме;пытаясь сохранить и базовый и подкласс параметризованным.Хотя я все еще думаю, что имеет , который в некоторой степени возможен в IronPython, Я не могу понять синтаксис, чтобы сделать это , поэтому сейчас я согласен с первой формой,И, как известно, это работает:
>>> class BindingListEx(System.ComponentModel.BindingList[str]):
... pass
...
>>>
>>> b = BindingListEx()
>>> b
<BindingListEx object at 0x000000000000002C>
>>> b.Add(3)
Traceback (most recent call last):
File "<string>", line 1, in <module>
TypeError: expected str, got int
>>> b.Add("cow")
>>>
Так что в этом примере BindingListEx
не является универсальным и подклассами из параметризованного базового класса BindingList
, который был передан str
в качестве его параметра.Это работает на данный момент.Если кто-нибудь выяснит, как сделать общее наследование Open Construct (вторая форма там), не стесняйтесь опубликовать его здесь, и вы получите приемлемый ответ, так как это было моей первоначальной целью.На данный момент это придется делать.