自定义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文件里有一个函数入 ...
随机推荐
- antmate.css
本文各式各样的动画来源于http://daneden.github.io/animate.css/ ,若想看效果可复制运行下文,或到该网站自行查阅. <!DOCTYPE html> < ...
- javascript 学习之自定义滚动条加滚轮事件
要自己写一个自定义滚动条加上滚轮事件,之前的没有滚轮事件不完整,今天整理了一个. 1.滚轮事件是不兼容的,firefox中是必需要用事件绑定的添加,用的DOMMouseScroll,当滚动鼠标的时候, ...
- javascript学习之时间组件
写了一个时间组件,哪里需要哪里调(菜鸟级别,大牛路过就Ok了): 先有一个HTML文件: <!doctype> <html> <head> <title> ...
- iOS 模仿一个小项目,总结一下里边的模块
ManoBoo: 参考链接:http://www.jianshu.com/p/fd4c46c31508 这个小的项目是参考ManoBoo的简书的,链接在上方,自己在仿做的过程中,也离不开Man ...
- USACO翻译:USACO 2014 MARCH GOLD P2 Sabotage
1.破坏{DOLD题2} sabotage.pas/c/cpp [问题描述] 农夫约翰的头号敌人保罗决定破坏农民约翰的挤奶设备.挤奶设备排成一行,共N(3<= N <=100000)台挤奶 ...
- jquery 图片没有路径,不显示图片。
$("img").each(function () { if ($(this).attr("src").trim() == "") { $( ...
- 使用PowerShell读取SharePoint里列表的内容
1. 在https://www.microsoft.com/en-us/download/details.aspx?id=42038这里下载SharePoint Online Client Compo ...
- mysql快速导出数据库ER图和数据字典(附navicat11安装教程及资源)
♣ mysql使用navicat11快速导出数据库ER图 ♣ mysql使用navicat11快速导出数据库数据字典 ♣ navicat11 for mysql (这里是mysql5.7.12)专业版 ...
- SQL2008还原数据库无法还原问题
SQL2008还原备份的SQL2008的.bak文件时会报错,大部分原因是因为当前登录的版本是2005的,因而无法还原用SQL2008备份的数据,结局的办法是去掉登录的服务器名称后面的后缀SQLEXP ...
- MXNET手写体识别的例子
安装完MXNet之后,运行了官网的手写体识别的例子,这个相当于深度学习的Hello world了吧.. http://mxnet.io/tutorials/python/mnist.html 运行的过 ...