• [织梦吧]唯一域名:www.dedecms8.com,织梦DedeCMS学习平台.

当前位置: > 编程与数据库 > net编程 >

在Visual Studio 2010中使用自动实现属性(2)

来源: www.dedecms8.com 编辑:织梦吧 时间:2012-06-27点击:

 

四、自动实现属性在使用过程中的限制

一般来说,自动属性支持多种解决方案。但是其并不是万能的,在某些场合中并不适合使用,如可能需要通过扩展的属性语法来实现。如现在有一个 Name的字段。当用户输入数据,系统将这个属性传给变量之前,可能需要先对其进行输入验证。如现在不少的注册网站,出于各种各样的原因(特别是出于安全方面的考虑),都会强调不允许使用一些特殊字符作为名字。这也是避免注入式攻击的一种很好的方式。为此当用户输入数据,点击“确定”按钮,系统将文本框中的值传给变量的时候,需要有一个对用户输入数据的验证过程。此时“自动实现属性”就没有用武之地了。

为此开发人员在使用这个新特性之前,对于其使用的一些限制还是需要有所了解。具体的来说,有如下这些限制。

第一,当需要创建WriteOnly属性或者ReadOnly属性的时候,不能够使用这个新特性。第二,当为Get或者SET函数指定不同的可访问性的时候,不能够使用这个特性。如在开发过程中,出于安全考虑,我们往往会对Set这个过程的权限进行限制,如会将其访问修饰符设置为 Private。而对于Get这个过程,由于其不会更改某个字段或者对象的属性,为此可以将其修饰符设置为Public。这可以实现安全与便利性之间的均衡。但是要实现这种需求的话,“自动实现属性”并不支持。因为自动实现属性它会自动关联这个两个过程,而且采用的修饰符都是Private。第三,当向属性Get或者Set过程中添加代码的时候,如上面列举的例子,需要对用户输入的数据进行验证的时候,则不能够采用“自动实现属性”。另外,如果需要为支持字段设置特殊属性或者说为自持字段提供XML注释等等,这些都是不允许的。

当然这些实用限制并不需要大家去死记硬背。一般多用几次,就会记住了。而且如果需要使用这个扩展属性的话,在2010版本中也提供了一种简便的实现方式。如遇到以上这些情况,需要采用包含Set或者Get过程的扩展属性的时候,编辑器可以自动为这个属性生成Get或者Set过程的相关语句。如当开发人员将光标放在Property语句后面的空行上,只需要键入G或者S并按回车键,系统就会自动生成相关的代码。这就好像在Word文档中,只需要输入2010,并按回车键,系统就会自动补充完日期类似。

所以,虽然“自动实现属性”在使用过程中受到种种的限制。但是一般来说,再结合这个“扩展”属性使用,其应用价值还是蛮大的。笔者相信,不久之后,这个特性一定会被广大的开发人员所接受,并成为其不可或缺的一个帮手。大家对于这个特性还有什么新的见解,笔者很乐意跟大家讨论。

About D8

  • ©2014 织梦吧(d8) DedeCMS学习交流平台
  • 唯一网址 www.DedeCMS8.com 网站地图
  • 联系我们 1978130638@qq.com ,  QQ