Como han dicho las otras respuestas, realmente no debería hacer esto. Pero, si insistes, entonces hay un hack desagradable conocido como "lanzar con el ejemplo" que te permitirá hacerlo. La técnica se menciona en un par de artículos, here y here.
public void FuncB()
{
var example = new { Id = 0, Name = string.Empty };
var obj = CastByExample(FuncA(), example);
Console.WriteLine(obj.Name);
}
private object FuncA()
{
var a = from e in DB.Entities
where e.Id == 1
select new { Id = e.Id, Name = e.Name };
return a.FirstOrDefault();
}
private T CastByExample<T>(object target, T example)
{
return (T)target;
}
(No puedo tomar el crédito por este truco, aunque the author of one of those articles says that he doesn't want to be associated with it either Su nombre podría ser familiar..)
¡Golpeado por 8 segundos! He eliminado el mío (no hay beneficio en duplicarlo). Pero enfatizar :: *** no hagas esto *** ;-p –
Has aceptado esto como tu respuesta preferida. Aunque es una técnica interesante, ¡no recomiendo usarla en ningún código importante/de producción! – LukeH
Ya. Es bueno saber que esto se puede hacer. Sin embargo, es realmente malo, pero yo también. Muhahhhhahahaaaa. –