Anonymous Types - Are there any distingushing characteristics?

前端 未结 3 1335
别那么骄傲
别那么骄傲 2020-11-27 04:57

Is there anything to use, to determine if a type is actually a anonymous type? For example an interface, etc?

The goal is to create something like the following...

3条回答
  •  借酒劲吻你
    2020-11-27 05:52

    As I recall, there is a [CompilerGenerated] marker... 2 secs

    Plus the name will be freaky, and it will be a generic type ;-p

    Actually, for a "get" etc I would probably just use a static (non-extension) method.

    If you just want a way to get the value from an instance of an anon-type (at a later point in time), a lambda is probably the best option - note you need a few tricks to pull this off:

        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 Get(
            TSource template, Func lambda)
        {
            return lambda;
        }
    

    (edit re the comment) There definitely is this attribute:

            var foo = new { A = "B" };
            Type type = foo.GetType();
    
            CompilerGeneratedAttribute attrib = (CompilerGeneratedAttribute) Attribute.GetCustomAttribute(
                type, typeof(CompilerGeneratedAttribute)); // non-null, therefore is compiler-generated
    

提交回复
热议问题