Can I specify a meaningful name for an anonymous class in C#?
We all know that when we create an anonymous class like this:
var Employee = new { ID = 5, Name= "Prashant" };
...at run time it will be of type:
<>f__AnonymousType0<int,string>
Is there any way to specify a meaningful name to such classes?
如果你对这篇文章有疑问,欢迎到本站 社区 发帖提问或使用手Q扫描下方二维码加群参与讨论,获取更多帮助。

评论(10)


No, there is no way to give a meaningful type name to these classes as you've declared them. Anonymous Types are just that, anonymous. There is no way to explicitly "name" the type in code without resorting to very ugly hacks.
If you really need to give the type a name you will need to explicitly declare and use a new type with the properties you need.



The answer in Java World would be a local class (defined in a method), which are absent in C#.

Actually, if you're not afraid of getting extremely nitty gritty, you could use TypeBuilder to build your own runtime type based on your anonymous type, which will allow you to specify a name for the type. Of course, it is much easier to just declare a class as almost everyone else in this thread suggested, but the TypeBuilder way is far more exciting. ;)



It's an anonymous type, that defeats the purpose. Those objects are designed to be temporary. Hell, the properties are even read-only.
Sorry, I'm being a smart-ass. The answer is no, there is no way to tell the compiler what name to use for an anonymous type.
In fact, the names of the types generated by the compiler use illegal characters in their naming so that you cannot have a name collision in your application.
发布评论
需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。