Детская сказка Пишем плагин для WordSyn. Часть 5.

Пишем плагин для WordSyn. Часть 4.

В этом посте я расскажу вам о том, как можно научить программу отыскивать плагины и распознавать их.

Для начала добавим в нашу программу небольшую функцию, которая будет искать плагины. Она выглядит следующим образом:

public static string PluginsDirectory = "plugins";
public static Dictionary<string, IPlugin> ListPlugins()
{
Dictionary<string, IPlugin> plugins = new Dictionary();
// папка с плагинами
string folder = System.AppDomain.CurrentDomain.BaseDirectory
+ PluginsDirectory;
if (Directory.Exists(folder))
{
// dll-файлы в этой папке
string[] files = Directory.GetFiles(folder, "*.dll");
foreach (string file in files)
{
try
{
Assembly assembly = Assembly.LoadFile(file);
foreach (Type type in assembly.GetTypes())
{
Type iface = type.GetInterface("Interfaces.IPlugin");
if (iface != null)
{
IPlugin plugin = (IPlugin)Activator.CreateInstance(type);
plugins.Add(plugin.Name, plugin);
}
}
}
catch
{
}
}
}
return plugins;
}

Результатом выполнения функции будет словарь (в терминах C#), содержащий все плагины, реализующие интерфейс IPlugin. В дальнейшем мы просто можем использовать этот словарь для обращения к тем или иным плагинам, назначение которых определяется по реализуемым ими интерфейсам.

Для упрощения выбора нужного плагина мы всегда можем сгруппировать их по назначению. Например, на форме ручной обработки текста мы можем разместить кнопочки для всех плагинов, которые реализуют интерфейс IWriterPlugin, а затем просто вызывать нужный плагин и вызывать его функцию Write(), передавая ей в качестве параметра текст, который нужно записать или экспортировать. А плагин уже разберется сам, что и как ему делать.

В следующем посте я расскажу о том, как написать плагин для WordSyn’a для публикации материалов на сайтах под управлением WordPress 2.6.

google.com bobrdobr.ru del.icio.us technorati.com linkstore.ru news2.ru rumarkz.ru memori.ru moemesto.ru

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