Expression Tree
Se c’è una attività lavorativa che mi piace più dello scrivere codice è quella di “rimuovere codice” extra. Ecco una nuova versione dei “metodi dinamici di delegazione” che ho scoperto mentre per lavoro mi documentavo sulla libreria degli ET della versione 4.0 del framework .net:
private TypeConstruct constructor;
delegate object TypeConstruct();
private static TypeConstruct CreateConstructor(Type t)
{
NewExpression call = Expression.New(t);
Expression<TypeConstruct> lambda = Expression.Lambda<TypeConstruct>(
Expression.Convert(call, typeof(object)));
return lambda.Compile();
}
Il codice qui sopra a differenza del precedente è compatibile anche con i setting di sicurezza estremamente aggressivi del mio Web Hoster pur mantenendo lo stesso livello di performance. Devo ammettere però che ho molta difficoltà nell’afferrare tutti i dettagli di quanto succede sotto il cofano. Però funziona…
-quack