自定义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文件里有一个函数入 ...
随机推荐
- Linux下配置一个VNC服务器
在Linux下配置一个VNC服务器,并设置2个用户,要求其中一个用户登录时不需要输入密码. 然后在客户端使用ssh+vncview的方式访问. 1确认vnc安装 2配置vncserver 3测试vnc ...
- 1.线性表-Array
fatal.h #include <stdio.h> #include <stdlib.h> #define Error( Str ) FatalError( Str ) #d ...
- Windows下用VMware安装Ubuntu虚拟机
安装: http://jingyan.baidu.com/article/0320e2c1ef9f6c1b87507bf6.html 全屏: http://jingyan.baidu.com/arti ...
- 单例模式-C++
单例模式(Singleton) --本文内容部分引自<大话设计模式 Chapter21> 一.概念:保证一个类仅有一个实例,并提供一个访问它的全局访问点. 通常我们可以让一个全局变量使一个 ...
- POST流方式接受数据方法
/** * 流方式接收数据 * @param $url * @param $jsonFile * @return bool */private static function sendStreamJs ...
- output_buffering开启
ecshop后台出现Warning: Cannot modify header information - headers already sent by 修改完PHP.ini配置文件后,一定要重启服 ...
- 在java中获取attr的值
首先说如何获取已经在style里面定义好的attr的值,以colorPrimary为例: TypedValue value = new TypedValue(); mContext.getTheme( ...
- as3正则表达式
1.新建正则表达式,有两种方式var exp1:RegExp = new RegExp("ABCD","g");var exp2 = /ABCD/g;//g g ...
- 采用阿里的API进行动态域名解析
#!/usr/bin/env python # -*- coding:utf-8 -*- import os from aliyunsdkcore import client from aliyuns ...
- 从PowerDesigner表字段的Name到EF实体类属性的Display Name(根据PowerDesigner生成EF实体类中文注释和验证元数据)
第一步:将PowerDesigner表字段的中文Name填入Comment中:工具-Execute Commands-Edit/Run Script... '********************* ...