#mono #ironpython
#mono #ironpython
Вопрос:
Я хочу написать дополнение Tomboy, используя IronPython, и я застрял в самом начале — мне нужно предоставить пространство имен C #.
Я имею в виду, вот как написать дополнение Tomboy http://live.gnome.org/Tomboy/HowToCreateAddins
Давайте начнем с создания файла плагина под названием InsertDateTime.cs со следующим содержимым:
using Tomboy; namespace Tomboy.InsertDateTime { public class InsertDateTimeAddin : NoteAddin { public override void Initialize () { } public override void Shutdown () { } public override void OnNoteOpened () { } } }
Могу ли я сделать это с помощью IronPython? Спасибо.
Комментарии:
1. Что именно вы подразумеваете под «предоставить пространство имен C #»? Не могли бы вы уточнить подробнее?
2. Кэмерон, я обновил тему. Надеюсь, это поможет)
Ответ №1:
Из Python вы можете импортировать модуль clr, а затем вызвать clr.Добавьте ссылку(‘AssemblyName’), где имя сборки является частичным или полным именем сборки — возможно, в вашем случае это Tomboy, это все, что вы бы скомпилировали с помощью C #. Затем вы можете выполнить «импорт Tomboy» или «из Tomboy импортировать NoteAddin».
Если вы размещаете IronPython через API хостинга, вы можете вместо этого использовать scriptRuntime.LoadAssembly(typeof(NoetAddin).Сборка); так что вам не нужно делать это на Python. Это может быть особенно полезно, чтобы избежать различных проблем с контекстом загрузчика в зависимости от способа загрузки сборки.
Комментарии:
1. Ммм… Но я действительно не понял, как это помогает предоставить пространство имен) Я имею в виду, мне нужно создать сборку с пространством имен Tomboy. Вставить дату из IronPython. Как я могу это сделать? (вы написали, как использовать существующее пространство имен из IronPython, но мне нужно сделать это по-другому ))
2. О, я понимаю… Поставщик CodeDom IronPython 1.x поддерживал выполнение этого для ASP.NET но IronPython 2.x этого не делает — на самом деле это не имеет особого смысла для Python.