Задать вопрос
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.
  • Вопрос задан
  • 2638 просмотров
Подписаться 3 Оценить 1 комментарий
Пригласить эксперта
Ответы на вопрос 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, адаптировать лень.
Ответ написан
Ваш ответ на вопрос

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

Похожие вопросы