ssc-hrep3, спасибо! В сети вкладка показала мне не могу игнорировать рег. У carToModalJSON reg было дополнительное: .. решил проблему.
Как другие ответы указали, Вы действительно не должны делать этого. Но, если Вы настаиваете, затем существует противный взлом, известный как "бросок примером", который позволит Вам делать это. Техника упоминается в нескольких статьях, здесь и здесь.
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;
}
(Я не могу взять кредит на этот взлом, хотя автор одной из тех статей говорит, что не хочет быть связанным с ним также. Его имя могло бы быть знакомым.)
Вы не можете возвратить анонимный тип из функции.
Для передачи анонимного типа или набора, который содержит анонимные типы вне границы метода, необходимо сначала бросить тип для возражения. Однако это побеждает строгий контроль типов анонимного типа. Если необходимо сохранить результаты запроса или передать их вне границы метода, рассмотреть использование обычной именованной структуры или класса вместо анонимного типа.
Анонимный тип является просто сгенерированным компилятором классом, и компилятор не готов сказать Вам название самого класса. Поэтому нет никакого способа, которым можно возвратить экземпляр этого класса от функции кроме возврата ссылки на object
.
Ну, я думаю, что ответ: не используйте анонимный тип вне объема где его заявленное. В этом случае создайте простой тип.
Если вы используете .NET 4.0, вы можете использовать кортежи для этого, вы вернете Tuple
. Вы можете реализовать свои собственные кортежи для 2.0 / 3.5, и на самом деле другие люди уже имеют, поэтому вы должны быть в состоянии сделать это, если хотите.
создаст класс для этого случая:
public class LISTFUNCA
{
public int identificacion;
public string nombre;
}
тогда:
public List<LISTFUNCA> FuncA()
{
var lista = (from e in DB.Entities where e.Id == 1
select new { identificacion = e.Id, nombre = e.Name})
.FirstOrDefault();
return lista.ToList();
}