利用Attribute和反射从模板生成短信
2009-05-31 23:43
169 查看
根据模板生成短信,这是一个比较常见的需求。说白了,就是如何把短信模板中的关键字替换掉,变成实际的、有意义的短信。
例如短信模板如下:"[用户名],今天是[日期],[内容]",那“[用户名]”、“[日期]”、“[内容]”,就是关键字。
大家会说,这还不容易,我写个函数替换下不就行了?
Message msg = new Message() { UserName = "张三", Content = "祝你生日快乐",Date=DateTime.Now.ToString("yyyy-MM-dd")};
Dictionary<string,string> nvc = SmsGeneratorHelper.GetMessageKeyValue(msg);
string template = "[用户名],今天是[日期],[内容]";
Console.WriteLine("模板是:{0}", template);
foreach(KeyValuePair<string,string> kvp in nvc)
{
template = template.Replace(kvp.Key, kvp.Value);
}
Console.WriteLine("替换后的内容:{0}", template);
看到了吧,结果出来了,而那段恶心的代码“template.Replace("[用户名]", userName).Replace("[日期]", date).Replace("[内容]", content)”消失了。
如果有新模板了,直接写一个模板实体类,将里面的字段贴上[Description("xxx")]标签就可以很方便生成短信了。
至于如何给模板实体类赋值(具体业务的问题),那就不是本文讨论的范围了。
本文只提供一种思路,欢迎各位拍砖。
[/b]
例如短信模板如下:"[用户名],今天是[日期],[内容]",那“[用户名]”、“[日期]”、“[内容]”,就是关键字。
大家会说,这还不容易,我写个函数替换下不就行了?
Message msg = new Message() { UserName = "张三", Content = "祝你生日快乐",Date=DateTime.Now.ToString("yyyy-MM-dd")};
Dictionary<string,string> nvc = SmsGeneratorHelper.GetMessageKeyValue(msg);
string template = "[用户名],今天是[日期],[内容]";
Console.WriteLine("模板是:{0}", template);
foreach(KeyValuePair<string,string> kvp in nvc)
{
template = template.Replace(kvp.Key, kvp.Value);
}
Console.WriteLine("替换后的内容:{0}", template);
看到了吧,结果出来了,而那段恶心的代码“template.Replace("[用户名]", userName).Replace("[日期]", date).Replace("[内容]", content)”消失了。
如果有新模板了,直接写一个模板实体类,将里面的字段贴上[Description("xxx")]标签就可以很方便生成短信了。
至于如何给模板实体类赋值(具体业务的问题),那就不是本文讨论的范围了。
本文只提供一种思路,欢迎各位拍砖。
[/b]
相关文章推荐
- 学习笔记---元数据、程序集、GAC版本控制、属性(Attribute)、反射(利用.NET编译器实现表达式计算器)
- 利用反射及ActionFilterAttribute实现MVC权限管理
- wps制作pdf模板,Adobe Acrobat DC利用pdf模板做填充数据表单域,在maven项目中利用java生成pdf
- java利用反射进行简单的自动sql生成
- (原创)利用扩展方法,给 IEnumerable<T> 增加一个生成 Html 的 select 标签的方法,不用 C# 中的反射技术
- 反射实体自动生成EasyUi DataGrid模板 第二版--附项目源码
- 利用反射实现自动生成页面
- 利用注解反射生成导出excel文件
- django基础2--django利用模板生成网页
- XsdGen:通过自定义Attribute与反射自动生成XSD
- C#自动给据sql中的带@的变量提取变量名称在从简单数据对象中取得生成SqlParameter数组进行数据插入(利用反射完成)
- WebApi中利用Razor模板引擎来生成html
- java反射并不是什么高深技术,面向对象语言都有这个功能,而且功能也很简单,就是利用jvm动态加载时生成的class对象
- Java利用MessageFormat实现短信模板的匹配
- 利用反射与dom4j读取javabean生成对应XML和读取XML得到对应的javabean对象集合
- 利用c#反射实现实体类生成以及数据获取与赋值
- FluentData-新型轻量级ORM 利用T4模板 批量生成多文件 实体和业务逻辑 代码
- 反射小应用,利用Class自动生成Dao层的部分代码
- 利用反射+特性实现简单的实体映射数据库操作类(还未做自动生成SQL语句部分)
- 利用模板导出word里面生成excel