我正在尝试使用TextReader创建一个SessionState对象。 https://github.com/connamara/quickfixn/blob/master/QuickFIXn/SessionSettings.cs
public SessionSettings(string file){
}
public SessionSettings(TextReader conf)
{
}
我正在尝试调用第二个构造函数。 TextReader是一个抽象类,
>>> QuickFix.SessionSettings(System.IO.StringReader("BLAH"))
不起作用,也不起作用:
>>> QuickFix.SessionSettings.Overloads[System.IO.TextReader](System.IO.StringReader("BLAH"))
Traceback (most recent call last):
File "<string>", line 1, in <module>
AttributeError: 'type' object has no attribute 'Overloads'
我能够通过子类化和实现__new__
和__init__
来调用它,但有没有更好的方法不需要对每个多构造函数类型进行子类化?
答案 0 :(得分:0)
供将来参考:
假设程序集A.dll引用B.dll,而B.dll包含要子类化的目标类。
clr.AddReferenceToFile("A.dll") # loads b.dll behind the scenes
clr.AddReferenceToFile("B.dll")
现在IronPython clr模块隐含地有两个对B.dll的引用,这可能导致绝对神秘的错误,例如上面的错误。
解决方案似乎只是加载最小的dll集,尽管我没有看到关于为什么会发生这种情况的确切机制的文档。