Search code examples
c#.net-4.0c#-4.0

Can a class property/field be of anonymous type in C# 4.0?


As in:

public class MyClass {

  private static var MyProp = new {item1 = "a", item2 = "b"};

}

Note: The above doesn't compile nor work (the var cannot be used there), it's only to show my point.

Update: Just to clarify the question, I had already tried using

private static dynamic MyProp = new {item1 = "a", item2 = "b"};

and this works, but it doesn't generate intellisense because of the dynamic typing. I am aware that anonymous typing is just a compiler trick, so I hoped I could use this trick to my advantage by declaring a structured field without having to declare a class beforehand (mainly because there's only going to be one instance of this particular kind of field). I can see now that it's not possible, but I'm not sure why that is. If the compiler is simply generating an implicit type for an anonymous object, it should be fairly simply to have the compiler generate this implicit type for a field.


Solution

  • No, any member should be a explicitly typed.

    You might go for dynamic type to give your member a chance to be evaluated at runtime though.