.Net T4 模板 实例(一)
来源:互联网 发布:js开发工具 编辑:程序博客网 时间:2024/05/17 02:07
T4模板基础就不在这里重复了,园子里有很多文章讲解T4模板。
今天给大家介绍一个实例 主要是针对WPF MVVM中Model的书写,
Model的格式大致是:
// 测试 private string a; /// <summary> /// 测试 /// <summary> public string A { get { return a; } set { if (a != value) { a = value; this.RaisePropertyChanged("A"); } } }
在Model 类中一般都是重复性质的工作,所有选择T4来生成该文件是个不错的选择。
生成model的核心代码如下:
BaseModelT4.tt
<#@ template language="C#" #><#@ assembly name="System.Core" #><#@ import namespace="System.Linq" #><#@ import namespace="System.Text" #><#@ import namespace="MVVMT4.models" #><#@ import namespace="System.Collections.Generic" #><#@ include file="BaseT4.tt" #><#foreach(ModelT4Model item in ModelT4OC) {#> // <#=item.Notes#> private <#=item.TypeName#> <#=Lower(item.PropertyName) #>; /// <summary> /// <#=item.Notes#> /// <summary> public <#=item.TypeName #> <#=Uppercase(item.PropertyName) #> { get { return <#=Lower(item.PropertyName) #>; } set { if (<#=Lower(item.PropertyName) #> != value) { <#=Lower(item.PropertyName) #> = value; this.RaisePropertyChanged("<#=Uppercase(item.PropertyName) #>"); } } }<#}#>
BaseModelT4_P.cs
public partial class BaseModelT4 { #region 字段 private ObservableCollection<ModelT4Model> _ModelT4OC = new ObservableCollection<ModelT4Model>(); #endregion #region 属性 public ObservableCollection<ModelT4Model> ModelT4OC { get { return _ModelT4OC; } set { _ModelT4OC = value; } } #endregion }
BaseT4.tt
<#@ template debug="false" hostspecific="false" language="C#" #><#@ assembly name="System.Core" #><#@ import namespace="System.Linq" #><#@ import namespace="System.Text" #><#@ import namespace="System.Collections.Generic" #><#@ output extension=".txt" #><#+public string Uppercase(string s) { if(string.IsNullOrEmpty(s)) { return string.Empty; } string notConvertS = s.Substring(1); string convertS=s.Substring(0,1); convertS = convertS.ToUpperInvariant(); return convertS + notConvertS; } public string Lower(string s) { if(string.IsNullOrEmpty(s)) { return string.Empty; } string notConvertS = s.Substring(1); string convertS=s.Substring(0,1); convertS = convertS.ToLowerInvariant(); return convertS + notConvertS; }#>ModelT4Model.cs
public class ModelT4Model : INotifyPropertyChanged { #region 字段 private string _TypeName = string.Empty; private string _PropertyName = string.Empty; //注释 private string _Notes = string.Empty; #endregion #region 属性 public string TypeName { get { return _TypeName; } set { if (_TypeName != value) { _TypeName = value; OnPropertyChanged("TypeName"); } } } public string PropertyName { get { return _PropertyName; } set { if (_PropertyName != value) { _PropertyName = value; OnPropertyChanged("PropertyName"); } } } /// <summary> /// 注释 /// </summary> public string Notes { get { return _Notes; } set { if (_Notes != value) { _Notes = value; OnPropertyChanged("Notes"); } } } #endregion #region 方法 private void OnPropertyChanged(string propertyName) { if (PropertyChanged != null) { PropertyChanged(this, new PropertyChangedEventArgs(propertyName)); } } #endregion #region 事件 public event PropertyChangedEventHandler PropertyChanged; #endregion }
源码下载
0 0
- .Net T4 模板 实例(一)
- 【.Net码农】初试T4模板
- T4模板
- T4模板
- T4模板
- t4.net
- T4 模板: 为 ASP.NET MVC 开发人员快速入门指南
- T4 模板 : 一种提升ASP.NET MVC开发速度方法
- 【.NET】T4模板——SSDL To SQL10.tt
- 一、代码生成器系列-T4模板学习整理
- T4模板使用-初探
- t4模板的用法
- T4模板调试方法
- T4模板基础
- T4模板基础
- T4模板调试方法
- T4模板生成器案例
- MVC5自定义T4模板
- 用GDB调试程序(四)
- Virtio:针对 Linux 的 I/O 虚拟化框架
- 用GDB调试程序(五)
- 欢迎使用CSDN-markdown编辑器
- 配置 Linux 的访问控制列表(ACL)
- .Net T4 模板 实例(一)
- 用GDB调试程序(六)
- JAVA反射机制
- tornado教程资源
- android读取keystore证书文件
- Nginx透传获取客户端IP地址
- Scala 自学笔记2_类
- Mongo-Hadoop
- C++拾遗--多线程:C语言多线程的引入