Compilar dinámicamente la pieza de código y agrégalo a la clase actual
-
27-10-2019 - |
Pregunta
Quiero crear varias propiedades en la marcha dentro del constructor de la clase y agregarlas a la clase actual. La plantilla de la propiedad es la siguiente
public [PropertyType] [PropertyName]
{
get {return Container.Resolve();}
}
He leído un poco sobre codedom y reflexión.
Cualquier pista sería muy apreciada. Gracias por adelantado
EDITAR: Estoy explicando el propósito debido a la cantidad de preguntas ... Estoy tratando de implementar la clase base para un localizador de modelos de vista. La vinculación en XAML se logra refiriéndose a una propiedad por su ruta, por lo tanto, debe ser una propiedad. Los tipos y nombres de las propiedades que se agregarán solo se conocen en tiempo de ejecución, por lo tanto, estoy usando la reflexión para obtenerlos. En resumen, necesito un ejemplo de tomar un código y compilarlo dinámicamente en la clase dada.
Solución
Si está bajo C# 4, puede usar las nuevas características dinámicas para eso. Usar ExpandoObject
o DynamicObject
Para agregar propiedades a su objeto dinámicamente. Si luego consulta ellos en XAML, ellos se resolverán correctamente.
En cualquier caso, no es posible modificar la clase existente. Lo que puede es crear una nueva clase, que pueda heredar de la clase existente y agregar las propiedades a eso. Deberías poder atarlos desde XAML.
Otros consejos
Enfoque alternativo:
Puede implementar iCustomTypedescriptor y proporcionar las propiedades adicionales
Ate tus cosas XAML a algo como XML y cambia XML en el tiempo de ejecución
Puede crear nuevas calss y heredarlo desde la clase actual, la nueva clase puede tener las propiedades sobre la mosca y la funcionalidad de la clase base
si es posible echar un vistazo a estoAyuda requerida para agregar nuevos métodos, propiedades en las clases existentes dinámicamente