Возникли проблемы при импорте интерфейса C# в Python

Сегодня я много занимался поиском и чтением, и не нашел правильного способа что-то реализовать или даже определить, возможно ли это.

Вот суть того, что я пытаюсь прямо сейчас. У меня есть приложение, которое загружает плагины через MEF. Плагины могут реализовывать различные интерфейсы, и скажем, у меня есть один под названием IDevice, У меня была эта дурацкая идея, что, возможно, пользователь захочет написать свой собственный плагин Device в IronPython, а его IronPython просто должен унаследовать от IDevice и реализовать необходимые методы.

Теперь я знаю, что реализовать интерфейс в IronPython можно, определив такой класс:

class MyDevice(IDevice):
  pass

Но я не могу обойти первую проблему - как правильно импортировать интерфейс?

Интерфейс IDevice определяется в отдельной сборке под названием MyInterfaces.dll, например:

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

я пробовал import MyInterfaces так как это самая логичная вещь, но это не сработало. Я также попробовал много менее логичных комбинаций importс и froms. Я всегда получаю следующую ошибку:

ImportException occurred
No module named MyInterfaces

Я загрузил Process Monitor, чтобы увидеть, что мое приложение пытается загрузить, когда я выполняю свой сценарий, и оно пытается загрузить файл с именем MyInterfaces, а затем попытается загрузить MyInterfaces.py. Ну, файл называется MyInterfaces *.dll*, поэтому я изменил свой оператор импорта, чтобы читать import MyInterfaces.dll, но это не имело никакого эффекта - мой код все равно будет пытаться загрузить файл с именем MyInterfaces. Я подтвердил, что все мои зависимости находятся в нужной папке.

Я чувствую себя очень хромым из-за того, что не могу понять это, поэтому я надеюсь, что кто-то может указать мне правильное направление. Спасибо!

1 ответ

Решение

Я считаю, что правильный подход будет:

import clr
clr.AddReference('MyInterfaces')

from Company.Shared.MyInterfaces import IDevice
Другие вопросы по тегам