Как уже сообщалось, вы действительно не должны это делать. Но, если вы настаиваете, тогда есть неприятный хак, известный как «набросок на пример», который позволит вам это сделать. Эта техника упоминается в нескольких статьях, here и 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;
}
(я не могу взять кредит на эту хака, хотя the author of one of those articles says that he doesn't want to be associated with it either Его имя может быть знакомо.).
Избито на 8 секунд! Я удалил мой (нет никакой пользы в его дублировании). Но подчеркнуть: *** не делайте этого *** ;-p –
Итак, вы приняли это как ваш предпочтительный ответ. Хотя это интересная техника, я настоятельно рекомендую не использовать ее в любом важном/производственном коде! – LukeH
Ya. Приятно знать, что это можно сделать. Действительно ужасно, но я тоже. Muhahhhhahahaaaa. –