首页新闻找找看学习计划

c#匿名类属性名称带特殊符号的问题

0
[待解决问题]

c#匿名类属性名称带特殊符号的问题:

比如说声明一个对象如:

var obj=new{data-val="测试"};

因为"-"是一特殊符号,属性认不到,编译错误,那匿名类的内部属性名称对特殊符号是怎么转义的

TiJay的主页 TiJay | 菜鸟二级 | 园豆:206
提问于:2014-08-04 16:45
< >
分享
所有回答(4)
0
var temp = new { @class = "Hello World" };

一般加@符号,但是中划线好像还真不行,一般正常定义属性有中划线编译也通不过的。

提供一个思路,看能不能用特性来实现你想要的功能。 

public class Temp
        {
            [PropertieName("data-val")]
            public String DataVal { get; set; }
        }

        public class PropertieNameAttribute : Attribute
        {
            public String Name { get; set; }

            public PropertieNameAttribute()
            {

            }

            public PropertieNameAttribute(String name)
            {
                Name = name;
            }
        }
写代码的小2B | 园豆:4346 (老鸟四级) | 2014-08-04 17:13

我还是用key-value的方式去解决吧,谢谢

支持(0) 反对(0) TiJay | 园豆:206 (菜鸟二级) | 2014-08-05 17:51
0

一切clr语言(包含c#)都会转义成il

il的变量名也是跟c#差不多 数字 英文 下划线

不存在特殊符号

 

另外匿名类型只是一种语法糖(一种封装)

生成的时候编译器还是会生成一个完全符合c#命名规则的类型来去对应你那个匿名类型

LeoLaw | 园豆:226 (菜鸟二级) | 2014-08-04 17:44
0


Dictionary<string,object>  来替代吧。

````` | 园豆:14268 (专家六级) | 2014-08-05 09:09
0

有中划线的变量名是非法的。跟匿名无关啊。不知道楼主到底想做啥?

forhells | 园豆:969 (小虾三级) | 2014-08-05 19:28
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册