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

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

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

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

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

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

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


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

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

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

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут