Как уже говорилось в других ответах, вы действительно не должны этого делать . Но, если вы настаиваете, то есть неприятный хак, известный как «приведение примера», который позволит вам это сделать. Техника упоминается в нескольких статьях: здесь и здесь .
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;
}
(Я не могу взять кредит на этот взлом, хотя автор одной из этих статей говорит, что он также не хочет быть связанным с ним . Его имя может быть знакомо.)