Проекты

File List Plugin Provider

Если необходимо ограничить список плагинов в папке, либо список плагинов не меняется от версии к версии, то лучше заранее создать файл со списком всех плагинов в папке и указать полное наименование класса в сборке, реализующий интерфейс IPlugin.

Для выбора директорий с плагинами в отличии от корневой директории, желательно использовать аргумент коммандной строки SAL_Path. При необходимости указания нескольких путей для поиска плагинов, необходимо разделить массив путей передаваемых в аргументе, символом «;»

В каждой папке указанной в аргументе, плагин ищет файл Plugins.List.xml. В файле должен содержаться корневой узел Plugins, в котором должен быть предоставлен массив элементов Plugin. Каждый элемент Plugin, должен содержать 1 атрибут Assembly и массив дочерних элементов Instance:

  1. Assembly — Наименование файла с расширением в текущей папке
  2. Instance — Полное наименование класса с пространством имён в файле, который реализует интерфейс IPlugin

XML (Пример)


<?xml version="1.0" encoding="utf-8" standalone="no"?>
<Plugins>
	<Plugin Assembly="Kernel.Empty.dll">
		<Instance>Kernel.Empty.PluginWindows</Instance>
	</Plugin>
	<Plugin Assembly="Plugin.Autorun.dll">
		<Instance>Plugin.Autorun.PluginWindows</Instance>
	</Plugin>
</Plugins>

XSD


<?xml version="1.0" encoding="utf-8"?>
<xs:schema id="Plugins" xmlns="" xmlns:xs="http://www.w3.org/2001/XMLSchema">
	<xs:attribute name="Assembly">
		<xs:simpleType>
			<xs:restriction base="xs:string">
				<xs:minLength value="1"/>
			</xs:restriction>
		</xs:simpleType>
	</xs:attribute>
	
	<xs:element name="Plugins">
		<xs:complexType>
			<xs:sequence>
				<xs:element name="Plugin" minOccurs="1" maxOccurs="unbounded">
					<xs:complexType>
						<xs:sequence>
							<xs:element name="Instance" minOccurs="1" maxOccurs="unbounded">
								<xs:simpleType>
									<xs:restriction base="xs:string">
										<xs:whiteSpace value="replace"/>
										<xs:minLength value="1"/>
									</xs:restriction>
								</xs:simpleType>
							</xs:element>
						</xs:sequence>
						<xs:attribute ref="Assembly" use="required"/>
					</xs:complexType>
				</xs:element>
			</xs:sequence>
		</xs:complexType>
	</xs:element>
</xs:schema>

Теги:

Скачать

Родительские файлы