看到这标题的朋友可能搞不懂到底在搞什么,不过不要紧有兴趣的朋友可以先了解一下IVsSingleFileGenerator到底是用来做什么用的《实现自定义的VsSingleFileGenerator 》;在vs.net里提供一个IVsSingleFileGenerator接口可以方便地为项目文件生成附属文件,如刚才那文章提到的根据XML文件自动生成一个附属的C#代码文件;当然这个IVsSingleFileGenerator并不只是针对XML文件,可以是随便为任何项目文件生成附属文件你只要在文件属性中设置相关Custom Tools就可以了.
创新互联是专业的潘集网站建设公司,潘集接单;提供成都做网站、网站制作,网页设计,网站设计,建网站,PHP网站建设等专业做网站服务;采用PHP框架,可快速的进行潘集网站开发网页制作和功能扩展;专业做搜索引擎喜爱的网站,专业的做网站团队,希望更多企业前来合作!
为什么在这里我提出在代码文件的基础上再生相关的代码附属文件呢,为什么不直接在原代码文件写完整就可以了;原因很简单因为手写代码是没有电脑来得快,最主要一个原因是基于XML的IVsSingleFileGenerator在某方面不好所以才采用基于代码文件的方式作为代码描述模板.用XML描述在现情况碰到的问题,在我的数据持久层里是采用XML结合IVsSingleFileGenerator来生成相关实体类的.
内容大概如下:
|
VsSingleFileGenerator有个不好的地方就是当主文件修改后会重新生成附属文件,这样就导致你无法修改代码文件.如果想为某些属性成员添加Attribute来处理一些功能基本是没办法的.
如添加成员数据验证:
[NotNull] |
即使能解决VsSingleFileGenerator生成附属文件冲突问题;但也要面对另一个问题,就如何扩展XML来处理这些扩展呢,添加XMLSchema扩展描述规则,重写VsSingleFileGenerator代码生成部份;这样下来没多久我估计自己会疯了....
实际情况添加不同Attribute来扩展辅助功能是很常见的事情,就一个验证来说根据实际情况就有很多情况,类构造方式也不一样.就针对这些情况来扩展XMLSchema和重写VsSingleFileGenerator带来的工作量就不用说了,还有一个问题就是XML并不能提供类型编译的保证这样对XML的质量是很难保证.
经过了一段时间的思考发现为什么不直接用代码作为原模板呢,这样就能得到IDE的支持,强在编译器的支持下保证类型输入规则的有效性.以下是本人实现的简单生成模型:
[Table] |
生成的相关代码
[Table] set{mUserName=value;EntityState.FieldChange("UserName");} } set{mBirthDate=value;EntityState.FieldChange("BirthDate");} } set{mRegion=value;EntityState.FieldChange("Region");} } set{mRemark=value;EntityState.FieldChange("Remark");} } |
这样的话即使我们如何给属性添加Attribute都不会带来代码上的修改,VsSingleFileGenerator只对属性作一个模板生成其他内容搬过来就可以了:)
WPS的排版真是没有WORD的好...估计我不会用.
分享文章:详解C#代码文件生成扩展代码文件
文章URL:http://www.mswzjz.cn/qtweb/news2/396102.html
攀枝花网站建设、攀枝花网站运维推广公司-贝锐智能,是专注品牌与效果的网络营销公司;服务项目有等
声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 贝锐智能