четверг, 3 сентября 2009 г.

Использование .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 коммент.:

Evgeny Pavlov 3 сентября 2009 г., 19:49  

А зачем ты вообще решил ковыряться в IronPython?

apalkoff 3 сентября 2009 г., 20:04  

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

Отправить комментарий