Welcome 微信登录
编程资源 图片资源库

首页 / 软件开发 / .NET编程技术 / 实现自定义的VsSingleFileGenerator

实现自定义的VsSingleFileGenerator2011-08-07 博客园 henry用过VS.NET的朋友应该会发现,在编辑一些文件时VS会在文件下面自动创建它的附属文件.而这些附属 文件往往是根据设计文件生成的代码文件来的.对于我们想实现这样的功能怎办呢?其实MS早就为我们想好 了,只要简单地实现IVsSingleFileGenerator;说是简单不过还是要做些功夫的,就是把编写后 VsSingleFileGenerator注册到共公程序集中,然后在注册表里添加一些东西才行.下面介绍自己实现NClay 实体设计的SingleFileGenerator,有需要的朋友可以参考代码实现自己的SingleFileGenerator:)

实现目的编写XML模型描述后自动生成附属C#代码文件.

XML设计文件:

<?xml version="1.0" encoding="utf-8" ?>

<nclay_models xmlns="http://nclay.cn/model.xsd" namespace="Blogs.Entities">

<class name="User" table="TUser" comment="">

<id name="UserID" type="System.String"/>

<property name="UserName" type="System.String"/>

<property name="UserPWD" type="System.String"/>

<property name="EMail" type="System.String"/>

<property name="Enabled" type="System.String"/>

<property name ="Remark" type="System.String"/>

</class>

</nclay_models>

生成代码模型文件内容:

using System;
using System.Data;
using NClay.Data;
using NClay.Data.Mappings;

[TableMapper(Name="User")]
public partial class User {

private void mUserID;

[PrimaryKey(Name="UserID")]
public virtual void UserID {
get {
return this.mUserID;
}
set {
this.mUserID = value;
}
}

public partial class Mapper : Table {

private ObjectField mAll;

private ObjectField mUserID;

public Mapper() :
base("User") {
this.mAll = new ObjectField("*", this);
this.mUserID = new ObjectField("UserID", this);
}

public virtual ObjectField All {
get {
return this.mAll;
}
}

public virtual ObjectField UserID {
get {
return this.mUserID;
}
}
}
}

public partial class ModelContext {

static User.Mapper mUser = new User.Mapper();

public static User.Mapper User {
get {
return mUser;
}
}
}