Предоставить пространство имен C # из IronPython

#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.