Получить доступ до членов анонимного типа - C#

Узнай цену своей работы

Формулировка задачи:

путаюсь в анонимных типах.
var a1 = new { A = 123, B = "text string" };
Console.WriteLine("a1 = {0}", a1);
// здесь все понятно
Console.WriteLine("a1.A = {0}", a1.A);
Console.WriteLine("a1.B = {0}", a1.B);
 
Func<object> fa2 = () => { return new { A = 234, B = "new string" }; };
var a2 = fa2();
Console.WriteLine("a2 = {0}", a2);
// а здесь при попытке обращения к члену анонимного типа получаю ошибку
Console.WriteLine("a2 = {0}", a2.A);    // error CS1061: 'object' does not contain a definition for 'A'
                        // and no extension method 'A' accepting a first argument
                        // of type 'object' could be found (are you missing
                        // a using directive or an assembly reference?)
наверняка проблема в том, что Func<object> fa2 возвращает тип object, и его нужно к чему-то привести, чтобы компилятор разобрался что к чему. хотя если строчку с ошибкой закомментировать, программа выдает вполне вразумительный результат:
a1 = { A = 123, B = text string }
a1.A = 123
a1.B = text string
a2 = { A = 234, B = new string }
значит, возможность добраться до членов типа есть. но какая?

Решение задачи: «Получить доступ до членов анонимного типа»

textual
Листинг программы
Func<T> Create<T>(Func<T> f)
{
    return f;
}

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

13   голосов , оценка 3.923 из 5