自定义GUID类
今天,同事发了个邮件说需要一个内部使用的GUID类,而不是System.Guid 结构体。什么意思呢?
例如public void Test(string guidPara) 这个方法的参数是个string类型,但是是通过参数名称告诉调用者是Guid类型的参数,因此,他需要的应该是:
public void Test(GUID para), 参数类型这么修改后,所有调用的地方需要统一改一遍,这不很恶。所以,实现了自定义的GUID类:
public class GUID
{
#region 构造函数 /// <summary>
/// 构造函数
/// </summary>
public GUID() { } /// <summary>
/// 构造函数
/// </summary>
/// <param name="guid">Guid</param>
public GUID(string guid)
{
Value = guid;
} /// <summary>
/// 构造函数
/// </summary>
/// <param name="guid">Guid</param>
/// <returns></returns>
public static implicit operator GUID(string guid)
{
return new GUID(guid);
} #endregion #region 属性 private string guidValue; /// <summary>
/// Guid
/// </summary>
public string Value
{
get
{
if (string.IsNullOrWhiteSpace(guidValue))
guidValue = Guid.NewGuid().ToString(); return guidValue;
}
private set
{
guidValue = value;
}
} #endregion /// <summary>
/// 重载ToString方法
/// </summary>
/// <returns>Value</returns>
public override string ToString()
{
return guidValue;
}
}
单元测试下:
[TestMethod]
public void GUIDTest1()
{
var guid = new GUID("97b7e1ab-db31-4679-8a3c-59f0101c7497");
Assert.AreEqual("97b7e1ab-db31-4679-8a3c-59f0101c7497", guid.Value);
} [TestMethod]
public void GUIDTest2()
{
GUID guid = "97b7e1ab-db31-4679-8a3c-59f0101c7497";
Assert.AreEqual("97b7e1ab-db31-4679-8a3c-59f0101c7497", guid.Value);
} [TestMethod]
public void GUIDTest3()
{
var guidValue = GetGuidValue("97b7e1ab-db31-4679-8a3c-59f0101c7497");
Assert.AreEqual("97b7e1ab-db31-4679-8a3c-59f0101c7497", guidValue);
} private string GetGuidValue(GUID guid)
{
return guid.Value;
}
自然好了很多,已有程序不需要进行修改,GUID在整个运行时也进行了强类型处理,有以下几个特点:
1.GUID强类型
2.GUID实例缓存了Value成员,new 操作自动生成Guid。
3.string类型隐式转换
请大家看看需要其他的改进吗?
自定义GUID类的更多相关文章
- [转]掌握 ASP.NET 之路:自定义实体类简介 --自定义实体类和DataSet的比较
转自: http://www.microsoft.com/china/msdn/library/webservices/asp.net/CustEntCls.mspx?mfr=true 发布日期 : ...
- java自定义注解类
一.前言 今天阅读帆哥代码的时候,看到了之前没有见过的新东西, 比如java自定义注解类,如何获取注解,如何反射内部类,this$0是什么意思? 于是乎,学习并整理了一下. 二.代码示例 import ...
- 关于MapReduce中自定义分区类(四)
MapTask类 在MapTask类中找到run函数 if(useNewApi){ runNewMapper(job, splitMetaInfo, umbilical, reporter ...
- 关于MapReduce中自定义分组类(三)
Job类 /** * Define the comparator that controls which keys are grouped together * for a single ...
- kettle系列-[KettleUtil]kettle插件,类似kettle的自定义java类控件
该kettle插件功能类似kettle现有的定义java类插件,自定java类插件主要是支持在kettle中直接编写java代码实现自定特殊功能,而本控件主要是将自定义代码转移到jar包,就是说自定义 ...
- java 28 - 4 JDK5的新特性 之 枚举的概述和自定义枚举类
枚举 枚举概述 是指将变量的值一一列出来,变量的值只限于列举出来的值的范围内.举例:一周只有7天,一年只有12个月等. 回想单例设计模式:单例类是一个类只有一个实例 那么多例类就是一个类有多个实例,但 ...
- 客户端使用自定义代理类访问WCF服务 z
通常在客户端访问WCF服务时,都需要添加服务引用,然后在客户端app.config或 web.config文件中产生WCF服务的客户端配置信息.若是每添加一个服务都是这样做,这样势必会将比较麻烦,能否 ...
- Lua调用自定义C++类
弄了一天终于会Lua调用自定义C++类.不容易啊. 我的电脑是64位的,装了64的Python不行,装了32位的就可以了,靠!下面是报错信息 python pyyaml Cheetah全都是装32位的 ...
- cocos2dx-lua绑定自定义c++类(二)
在 cocos2dx-lua绑定自定义c++类(一)中介绍了如何产生绑定文件. 现在,来看看怎么在工程里使用这个cpp文件.像普通源码文件一样,导入到工程里,看到 LuaTest.h文件里有一个函数入 ...
随机推荐
- Python实战2( 接上):扫描多余中文
还是接上一篇,扫描多余中文,支持自定义忽略字段 源代码,详看 http://pan.baidu.com/s/1ntC78Zv ScanChinese.zip
- BZOJ 2761: [JLOI2011]不重复数字 水题
2761: [JLOI2011]不重复数字 Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 2100 Solved: 809 题目连接 http:// ...
- Learn ZYNC (2)
AXI HP接口的DMA+GIC编程(参照博客) 参照文档:UG873,博客文档 参考设计代码文件:ug873源码 我的Vivado+SDK工程文件打包(60+M) 我的DMA驱动程序(已完成) Vi ...
- 【iCore3 双核心板_FPGA】实验二十五:NIOS II之UART串口通信实验
实验指导书及代码包下载: http://pan.baidu.com/s/1eRMZq18 iCore3 购买链接: https://item.taobao.com/item.htm?id=524229 ...
- Neil·Zou 语录二
1 “Later equals never !”LeBlanc法则 2 爱情使人忘记时间,时间也会使人忘记爱情,不要让太多的昨天占据你的今天,请相信:是你的不管你怎样任性他都不会离开你:失去的其实 ...
- Flink - NetworkEnvironment
NetworkEnvironment 是一个TaskManager对应一个,而不是一个task对应一个 其中最关键的是networkBufferPool, operator产生的中间结果,Result ...
- 带你玩转JavaWeb开发之三 -JS插件实战开发
前提:需要掌握的知识点 填写HTML代码 Element元素中有一个innerHTML属性,这个属性可以填写一段html代码 innerHTML = "<font ...
- Python先合并再排序
前几天遇到的美团笔试题 题目:大概要求输入两组数字,对这两组数值排序然后输出结果 思路:输入两组数,合并两组数,排序 list1 = raw_input("input some number ...
- win7+vs2008+windows mobile6.5.3
1.安装vs2008+vs2008sp12.安装Windows Mobile 6 Professional SDK Refresh.msi3.安装Windows Mobile 6 Profession ...
- Servlet 3.0
Servlet 3.0 作为 Java EE 6 规范体系中一员,随着 Java EE 6 规范一起发布.该版本在前一版本(Servlet 2.5)的基础上提供了若干新特性用于简化 Web 应用的开发 ...