是否可以从IronPython调用重载的C#构造函数?

时间:2015-04-13 20:16:56

标签: c# .net ironpython quickfix fix-protocol

我正在尝试使用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__来调用它,但有没有更好的方法不需要对每个多构造函数类型进行子类化?

1 个答案:

答案 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集,尽管我没有看到关于为什么会发生这种情况的确切机制的文档。