LINQ to Reflection - Parte tre

di Cristian Civera, in .NET 3.5,

Ho avuto un po' di tempo per fare alcune aggiunte alla libreria che ora è disponibile nel lab.

Ho aggiunto una classe DTOCopy<Tsource,TTarget> che mi permette di memorizzare attraverso un membro statico le proprietà che hanno in comune due classi. L'uso di una classe generica mi permette di avere un meccanismo automatico di cache in funzione delle classi che fanno da source e da target. Lo scopo è creare un extension method CopyTo per copiare i valori da una classe ad un'altra, utile nei DTO:

public class ProductDTO
{
    public ProductDTO()
    {
    }
    public ProductDTO(Product source)
    {
        // Copia solo le proprietà che hanno in comune
        source.CopyTo(this);
    }
    public string Description { get; set; }
}

Un secondo extension method invece permette di creare un expression linq per un object initializer di una classe DTO. Siccome mi capita spesso di avere un'entità LINQ to SQL o LINQ to Entities e nell'espressione LINQ voglio avere come risultato una classe DTO, mi son fatto un extension method che mi evita di elencare tutte le proprietà da travasare:

// Espressione LINQ per DTO
IQueryable<Product,ProductDTO> products = new Product[] { new Product { Description = "ppp" } }.AsQueryable();
IEnumerable<ProductDTO> productsDTO = products.SelectDTO<Product,ProductDTO>();

Decisamente comodo :-)

Commenti

Visualizza/aggiungi commenti

| Condividi su: Twitter, Facebook, LinkedIn

Per inserire un commento, devi avere un account.

Fai il login e torna a questa pagina, oppure registrati alla nostra community.

Nella stessa categoria
I più letti del mese