Cómo funciona el ejemplo de extensibilidad del diseñador
Cada proyecto del ejemplo de extensibilidad de Designer contiene dos clases: una clase Extender y una clase Proveedor de extensiones. Estas clases están diseñadas para ampliar las funcionalidades y definir las propiedades de los elementos del modelo ItineraryDsl .
Las clases del proveedor de extensiones derivan de la clase ExtensionProviderBase y tienen el ExtensionProviderAttribute aplicado a ellas con propiedades que identifican la extensión y su propósito. Estos valores se mostrarán al usuario en el diseñador cuando el usuario establezca la propiedad Extender en un elemento de modelo. Cuando se inicializan las clases del proveedor de extensiones, llaman al constructor para ExtensionProviderBase y pasan al tipo de la clase extender.
Las clases Extender tienen aplicado un atributo ObjectExtender ; al atributo ObjectExtender , pasan el tipo del objeto en el valor de ItineraryDsl que extienden. La clase base de estas clases varía en función del tipo de extensor. En el caso de los extensores resolver, la clase base es ObjectExtender<Resolver>. Para los extensores de Servicio de itinerarios, la clase base es ItineraryServiceExtenderBase. En las clases Extender , los siguientes atributos se aplican a las propiedades: atributos necesarios para la visualización adecuada en una cuadrícula de propiedades, atributos incluidos en la Biblioteca empresarial de Microsoft con fines de validación, atributos necesarios para la serialización adecuada y/o atributos que determinan cómo se conservan las propiedades.
Cuando estos ensamblados se compilan y colocan en la carpeta Lib, el diseñador los carga y almacena en caché en tiempo de ejecución. A medida que se necesitan extensores, el Valor de ItineraryDsl usa la reflexión para cargar los ensamblados aplicables desde la memoria caché examinando los tipos exportados y los atributos de esos tipos.