无法将C#接口导入Python

时间:2010-11-10 02:43:58

标签: c# .net-3.5 import ironpython dynamic-language-runtime

我今天一直在做一堆搜索和阅读,并没有找到正确的方法来实现某些东西,甚至没有确定是否可能。

这是我现在正在尝试的要点。我有一个通过MEF加载插件的应用程序。插件可以实现各种接口,假设我有一个名为IDevice的接口。我有这个古怪的想法,也许用户可能想在IronPython中编写自己的Device插件,而他的IronPython只需继承IDevice并实现必要的方法。

现在我知道可以通过定义这样的类来实现IronPython中的接口:

class MyDevice(IDevice):
  pass

但我无法解决第一个问题 - 导入界面的正确方法是什么?

IDevice接口在一个名为MyInterfaces.dll的单独程序集中定义,如下所示:

namespace Company.Shared.MyInterfaces
{
    public interface IDevice
    {
        string GetName();
    }
}

我已经尝试过import MyInterfaces,因为这是最合乎逻辑的事情,但这不起作用。我还尝试了importfrom s的许多逻辑组合。我总是收到以下错误:

ImportException occurred
No module named MyInterfaces

我加载了Process Monitor,以查看我的应用程序在执行脚本时尝试加载的内容,并且它正在尝试加载名为MyInterfaces的文件,然后尝试加载MyInterfaces.py。好吧,该文件名为MyInterfaces * .dll *,因此我将import语句更改为import MyInterfaces.dll,但这没有效果 - 我的代码仍然只是尝试加载文件叫做MyInterfaces。我已确认所有依赖项都在正确的文件夹中。

由于无法弄清楚这一点,我感到非常蹩脚,所以我希望有人可以指出我正确的方向。谢谢!

1 个答案:

答案 0 :(得分:4)

我相信正确的方法是:

import clr
clr.AddReference('MyInterfaces')

from Company.Shared.MyInterfaces import IDevice