Насколько я помню, есть маркер [CompilerGenerated]
... 2 секунды
Кроме того, имя будет причудливым и универсальным; -p
На самом деле, для "get" и т. Д. Я бы, вероятно, просто использовал статический метод (без расширения).
Если вам просто нужен способ получить значение из экземпляра анонного типа (в более поздний момент времени), лямбда, вероятно, является лучшим вариантом - обратите внимание, что вам нужно несколько хитростей, чтобы это осуществить:
static void Main()
{
var foo = new { name = "John", age = 25 };
var func = Get(foo, x => x.age);
var bar = new { name = "Marc", age = 30 };
int age = func(bar);
}
// template here is just for type inference...
static Func<TSource, TValue> Get<TSource, TValue>(
TSource template, Func<TSource, TValue> lambda)
{
return lambda;
}
(отредактируйте комментарий) Там определенно есть этот атрибут:
var foo = new { A = "B" };
Type type = foo.GetType();
CompilerGeneratedAttribute attrib = (CompilerGeneratedAttribute) Attribute.GetCustomAttribute(
type, typeof(CompilerGeneratedAttribute)); // non-null, therefore is compiler-generated