Создание CommonSnappableTypes.dll
Создание CommonSnappableTypes.dll
Первой нашей задачей является создание компоновочного блока, содержащего типы, которые должен использовать каждый подключаемый модуль, чтобы обеспечить возможность его подключения к нашему приложению Windows Forms. Проект библиотеки классов CommonSnappableTypes определяет следующие два типа.
namespace CommonSnappableTypes {
public interface IAppFunctionality {
void DoIt();
}
[AttributeUsage(AttribyteTargets.Class)]
public sealed class CompanyInfoAttribute: System.Attribute
private string companyName;
private string companyUrl;
public CompanyInfoAttribute(){}
public string Name {
get { return companyName; }
set { companyName = value; }
}
public string Url {
get { return companyUrl; }
set { companyUrl = value; }
}
}
}
Интерфейс IAppFunctionality обеспечивает полиморфные возможности для всех подключаемых модулей, которые может принять наше расширяемое приложение Windows Forms. Наш пример является исключительно иллюстративным, поэтому здесь интерфейс предлагает единственный метод, DoIt(). В реальности это может быть интерфейс (или набор интерфейсов), позволяющий подключаемому объекту сгенерировать программный код сценария, поместить пиктограмму в окно инструментов или интегрироваться в главное меню приложения.
Тип CompanyInfoAttribute является пользовательским атрибутом, который будет применяться к любому типу класса, размещаемому в контейнере. Исходя из определения этого класса, можно утверждать, что [CompanyInfo] позволяет разработчику расширения сообщить информацию о происхождении подключаемого компонента.