Использование .Net классов в IronPython
На самом деле очень просто использовать .Net классы в IronPython. Первое о чем нужно помнить -- надо добавить ссылку (reference) на сборку вызываемого класса (также как и на C#).
Для этого надо использовать метод AddReference модуля clr. Правда необходимо, чтобы IronPython смог отыскать файл с указываемым пространством имен. Это достигается добавлением соответствующего пути к переменной sys.path.
Смотрите на пример. Сперва создадим простой класс на C#, который назовем TestClass и расположим в пространстве имен SampleClasses:
namespace SampleClasses
{
public class TestClass
{
public int Add(int a, int b)
{
return a + b;
}
}
}
Для простоты скопируем скомпилированный файл в папку C:\lib. Теперь запустим IronPython (будем считать, что вы его уже поставили). На экране появится что-то вроде этого:
Теперь, удостоверимся, что сборка SampleClasses доступна из IronPython:>>>import sys
>>>sys.path.append(‘C:\\lib’)
Теперь добавляем зависимость:
>>>import clr
>>>clr.AddReference('SampleClasses')
Импортируем TestClass из пространства имен SampleClasses:
>>>from SampleClasses import TestClass
Вот теперь все готово. Попробуем использовать этот класс:
>>>a = TestClass()
>>>a.Add(30,36)
66
Так вот это и работает. Теперь можно продолжить забавы с другими, уже готовыми классами .Net.


2 коммент.:
А зачем ты вообще решил ковыряться в IronPython?
Так вот думаю, что PicLab надо превращать потихоньку в библиотеку на C#. Для конкретных экспериментов скриптовать на IronPython (возможно непосредственно в PicLab). Все обработчики событий оформить тоже как скрипты, работающие с оболочкой (типа вывод картинок на экран) и с библиотекой.
Отправить комментарий