Сегодня я много занимался поиском и чтением и не нашел правильного способа что-то реализовать или даже определить, возможно ли это.
Вот суть того, что я пытаюсь сделать прямо сейчас. У меня есть приложение, которое загружает плагины через 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
с и from
с. Я всегда получаю следующую ошибку:
ImportException occurred
No module named MyInterfaces
Я загрузил Process Monitor, чтобы увидеть, что пыталось загрузить мое приложение, когда я выполнял свой скрипт, и оно пыталось загрузить файл с именем MyInterfaces, а затем попытался бы загрузить MyInterfaces.py. Ну, файл называется MyInterfaces * .dll *, поэтому я изменил свой оператор импорта на чтение import MyInterfaces.dll
, но это не имело никакого эффекта - мой код все равно просто попытался бы загрузить файл с именем MyInterfaces. Я подтвердил, что все мои зависимости находятся в нужной папке.
Я чувствую себя очень хромым из-за того, что не могу понять это, поэтому я надеюсь, что кто-то может указать мне правильное направление. Спасибо!