2012-01-08 13 views
8

Estoy creando un formulario de Windows genérico que acepta T y utiliza la reflexión con atributos personalizados para crear etiquetas y controles de entrada en tiempo de ejecución.Plantilla de formulario de Windows genérica

Ejemplo:

class GenericForm<T>: Form where T : ICloneable<T> 
{ 
} 

Aquí hay un enlace a una pregunta anterior por el código del formulario: SO Question.

Esta forma podría aceptar la siguiente clase de entidad como un ejemplo:

class Vehicle: ICloneable<Vehicle> 
{ 
    public int Id { get; set; } 
    public int Name { get; set; } 
    public int Description { get; set; } 
} 

Como se puede imaginar, la magia detrás de la forma sería utilizar la reflexión para determinar los tipos de datos, los criterios de validación, los tipos de control preferido para usar, etc.

En lugar de volver a inventar la rueda, pensé que valdría la pena pedir SO si alguien sabe de tales marcos. No hace falta decir que estoy buscando algo simple en lugar de un marco voluminoso.

+0

Utilizamos [Lightswitch] (http://www.microsoft.com/visualstudio/en-us/lightswitch) en el trabajo para este tipo de cosas (más o menos). –

+0

Solo he leído sobre LightSwitch y no lo he probado. Por lo que sé, es independiente de Visual Studio y se adapta mejor a un subconjunto de aplicaciones. –

+0

No estoy seguro de lo que quiere decir con 'es independiente de Visual Studio'. Sí, es un producto separado de Microsoft al que tendrías que licenciar. No, no es una aplicación separada, es más como un complemento de Visual Studio. Sin saber qué tipo de aplicación pretendes crear con esto, sería difícil saber si Lightswitch encajaría bien. Ver que estás después de la generación de Winforms probablemente no, ya que Lightswitch genera aplicaciones de Silverlight. –

Respuesta

0

Hasta donde yo sé, no hay marcos que generen el código de UI en tiempo de ejecución. Hay muchas herramientas (generadores de códigos) que hacen esto antes. Pero no tendrías la ventaja de "solo" cambiar el código; tenías un paso adicional en el que necesitarías iniciar el generador de código.

Si realmente desea crear la información de UI en tiempo de ejecución - Generaría Atributos para sus propiedades, eso le diría a su UI cómo tratar con esta propiedad (si no se proporciona ningún Atributo) tiene un valor predeterminado para sus tipos de datos) Es una gran cantidad de codificación, pero podría ahorrarle tiempo para proyectos pequeños y medianos en el futuro.

Otra cosa que podría hacer es externalizar su información de IU en un archivo XML y tener un generador para esa. De hecho, hay un marco que hace eso: eche un vistazo al marco re-motion. No sé si la parte de la interfaz de usuario es gratuita pero tiene alguna funcionalidad (es decir, mixins) que podría ayudarlo a cumplir su tarea.

+0

Re-Motion parece tener lo que necesito, pero está relacionado con el LPGL que No puedo usar productos comerciales con demasiada flexibilidad. –

+0

Y sí, el uso de atributos es la forma en que actualmente estoy generando la IU sobre la marcha. –

+0

Bien - entonces iría por los atributos también. Indagué en ese campo pero no hay nada que genere UI sobre la marcha, pero hay muchos generadores de códigos de trabajo que no son tan buenos. – Gambrinus

1

eXpressApp Framework (XAF) pueden generar IU sobre la marcha. En un caso simple, un programador creará entidades comerciales solamente, y no se ocupará de la interfaz de usuario en absoluto.

+0

eXpressApp Framework parece contener todo lo que necesito. Solo tengo que presupuestar para una suscripción anual ahora :). –

Cuestiones relacionadas