sdramare
@sdramare

Этюд на C#: Создать строго типизированный делегат, возращающий анонимный тип

Привет, Хабр.

Хочешь простой этюд на C#?

Допустим у нас есть анонимный тип new{ Name = "aaa", Number = 123 }

Как нам сделать делегат getAnonimusInstance, возращающий объект анонимного типа?
Т.е. чтобы скомпилировалось и работало
  1. var a = getAnonimusInstance();
  2. Console.WriteLine(a.Name);
  3. var b = getAnonimusInstance();
  4. Console.WriteLine(b.Number == a.Number); //где a и b имеют анонимный тип, описанный выше.
* This source code was highlighted with Source Code Highlighter.
  • Вопрос задан
  • 2635 просмотров
Пригласить эксперта
Ответы на вопрос 2
int02h
@int02h

dynamic GetAnonimusInstance()
{
	return new {Name = "aaa", Number = 123};
}

Не оно?
Ответ написан
PashaPash
@PashaPash
class Program
{
  static object ReturnAnonymous()
  {
    return new { Name = "aaa", Number = 123 };
  }

  static Func<T> Cast<T>(object obj, T type)
  {
    return () => (T)obj;
  }

  static void Main(string[] args)
  {
    object o = ReturnAnonymous();
    var getAnonimusInstance = Cast(o, new { Name = "", Number = 0 });

    var a = getAnonimusInstance();
    Console.WriteLine(a.Name);
    var b = getAnonimusInstance();
    Console.WriteLine(b.Number == a.Number); //где a и b имеют анонимный тип, описанный выше.
  }
}


* This source code was highlighted with Source Code Highlighter.


Написал до уточнения про 3.5, адаптировать лень.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы