Con su acuerdo, nosotros y nuestros socios usamos cookies o tecnologías similares para almacenar, acceder y procesar datos personales como su visita en este sitio web.
Nosotros y nuestros socios hacemos el siguiente tratamiento de datos: Almacenar o acceder a información en un dispositivo, Anuncios y contenido personalizados, medición de anuncios y del contenido, información sobre el público y desarrollo de productos, Compartir datos y perfiles no vinculados a su identidad, Datos de localización geográfica precisa e identificación mediante las características de dispositivos
Aceptar Ver Política de Cookies

MENÚ

INICIO SERVICIOS SOFTME PORTAFOLIO CONTACTO BLOG
  • PARSEAR UN OBJETO DE LA CLASE PADRE A UNA HIJA. C#. APS.NET MVC

    26/06/2015 - Pedro Luis

    Compartir:

    Leer
  • Parsear un objeto de la clase padre a una hija. C#. Aps.net MVC

    Programación | Asp.Net MVC | c# | POO |

    Contexto:

    Estoy en pleno desarrollo de una aplicación para una naviera. El proyecto lo estoy haciendo en asp.net MVC4. Para facilitar el mantenimiento lo tengo dividido en capas. En una de ellas tengo los objetos comunes al proyecto DTO (Data Transfer Objects) que lo utilizo para transportar los datos entre las capas. En el proyecto en MVC quería utilizar los DataAnnotations para la validación y para la nuestra de texto de los labels. Para la única cosa que se me ha ocurrido es hacer una clase derivada y crear los metadata asociados y trabajar con ella en la parte de la interfaz. Es decir: [MetadataType(typeof(PersonaModelMetadata))] public class PersonaModel: DTOTrasmapi.Persona { } public class PersonaModelMetadata { [Required(ErrorMessageResourceName = "Required", ErrorMessageResourceType = typeof(Resources.Shared.ErrorMessages))] [Display(Name = "LblPersonaNombre_Name", Description = "LblPersonaNombre_Description", ResourceType = typeof(Resources.Models.Labels))] public int Nombre { get; set; } [Required(ErrorMessageResourceName = "Required", ErrorMessageResourceType = typeof(Resources.Shared.ErrorMessages))] [Display(Name = "LblPersonaApellido1_Name", Description = "LblPersonaApellido1_Description", ResourceType = typeof(Resources.Models.Labels))] public string Apellido1 { get; set; } [Display(Name = "LblPersonaApellido2_Name", Description = "LblPersonaApellido2_Description", ResourceType = typeof(Resources.Models.Labels))] public string Apellido2 { get; set; } [Required(ErrorMessageResourceName = "Required", ErrorMessageResourceType = typeof(Resources.Shared.ErrorMessages))] [Display(Name = "LblPersonaTelefono_Name", Description = "LblPersonaTelefono_Description", ResourceType = typeof(Resources.Models.Labels))] public string Telefono { get; set; } [Required(ErrorMessageResourceName = "Required", ErrorMessageResourceType = typeof(Resources.Shared.ErrorMessages))] [Display(Name = "LblPersonaEmail_Name", Description = "LblPersonaEmail_Description", ResourceType = typeof(Resources.Models.Labels))] public string Email { get; set; } }

    El problema:

    El problema ha venido a la hora de parsear un objeto padre a un objeto hijo. No lo he podido hacer directamente asi: Trasmapi.Models.PersonaModel p = (Trasmapi.Models.PersonaModel)GetTaquilla().GetCompra().Comprador;

    La solución:

    Para solucionarlo he hecho lo siguiente: En la clase hija PersonaModel he creado dos constructores. El segundo es el interesante que es el que recorre todas las propiedades y asigna sus valores a la clase hija. public PersonaModel() { } public PersonaModel(DTOTrasmapi.Persona _persona) { foreach(var property in _persona.GetType().GetProperties()) { var value = property.GetValue(_persona, null); this.GetType().GetProperty(property.Name).SetValue(this, value, null); //this.GetType().GetProperty(property.Name).SetValue(this, property.GetValue(_persona, null), null); } }

    CATEGORÍAS

    PROGRAMACIÓN TURISMO TUTORIALES APLICACIONES PENSAMIENTOS EMPRESA MOTOR DE RESERVAS GENERAL GOOGLE BENIDORM HOTELES IDEAS SITIOS DE INTERÉS SEO C# CONFERENCIAS SIN CATEGORÍA JQUERY ASP.NET MVC DISEÑO POST-FORMAT-IMAGE ASP.NET REDES SOCIALES FACEBOOK MARKETING E-COMMERCE PHP CSS APIS LINCKEDIN DEMOS MICROFORMATOS ANDROID ACTUALIZACIONES IMPRESORAS PLANTILLAS RESTAURANTES WORDPRESS RESPONSIVE YOUTUBE API GOOGLE ANALYTICS API APIS ANALYTCIS YOUTUBE DROPBOX BOOKING.COM AUTHOR INTEGRACIÓN GRUPO SIME MARKETING PERIFÉRICOS LECTOR CÓDIGO BARRAS FARMACIA FARMATIC ANALYTICS WIDEIMAGE DINAHOSTING CODEIGNITER MOBILE VALIDATOR POO TPV PLANNING WEB SEGURIDAD AMP ENTITYFRAMEWORK GOOGLE + ENTITY FRAMEWORK

    BUSCAR POR TITULO

    Volver a blog
    Volver a blog
    Ver más noticias
  • POST DESTACADOS

    Cargar Entidades Relacionadas Implícita y Explícita Entity Framework Code First c#

    29/05/2017 - Pedro Luis

    LEER
    Versión AMP dudas y comentarios.

    26/01/2017 - Pedro Luis

    LEER
    Nuevos escenarios en conectividad y seguridad p. . .

    18/10/2016 - Pedro Luis

    LEER

    SUSCRÍBETE A NUESTRAS NOTICIAS

    Si quieres estar al día de todas las noticias relacionadas, así como de los cambios de precio y ofertas que proporcionemos en la web, deja tu email y te enviaremos información periódica

    Para estar al día de nuestra noticias y recibir ofertas personalizadas.

    CATEGORÍAS

    PROGRAMACIÓN TURISMO TUTORIALES APLICACIONES PENSAMIENTOS EMPRESA MOTOR DE RESERVAS GENERAL GOOGLE BENIDORM HOTELES IDEAS SITIOS DE INTERÉS SEO C# CONFERENCIAS SIN CATEGORÍA JQUERY ASP.NET MVC DISEÑO POST-FORMAT-IMAGE ASP.NET REDES SOCIALES FACEBOOK MARKETING E-COMMERCE PHP CSS APIS LINCKEDIN DEMOS MICROFORMATOS ANDROID ACTUALIZACIONES IMPRESORAS PLANTILLAS RESTAURANTES WORDPRESS RESPONSIVE YOUTUBE API GOOGLE ANALYTICS API APIS ANALYTCIS YOUTUBE DROPBOX BOOKING.COM AUTHOR INTEGRACIÓN GRUPO SIME MARKETING PERIFÉRICOS LECTOR CÓDIGO BARRAS FARMACIA FARMATIC ANALYTICS WIDEIMAGE DINAHOSTING CODEIGNITER MOBILE VALIDATOR POO TPV PLANNING WEB SEGURIDAD AMP ENTITYFRAMEWORK GOOGLE + ENTITY FRAMEWORK

    BUSCAR POR TITULO

    Volver a blog
  • www.softme.es
    676 79 8 162
    soporte@softme.es

    Benidorm

    sftme
    SoftmeDesarrollo
    SoftmeDesarrollo
    SoftmeDesarrollo
    676 79 8 162 soporte@softme.es
    sftme
    SoftmeDesarrollo
    SoftmeDesarrollo
    SoftmeDesarrollo