using System; using System.Collections.Generic; using System.Text; namespace Darkleo.Com.Helper { /// /// Guid mit kurzerer Darstellung 22 Zeichen /// SmallGuid sg = SmallGuid.NewSmallGuid(); /// Console.WriteLine("SmallGuid:" + sg); /// Console.WriteLine("Guid:" + (Guid)sg); /// public class SmallGuid { private Guid guid; private string smallString; public SmallGuid() { this.guid = new Guid(); this.smallString = SmallGuid.GuidToString(guid); } public SmallGuid(Guid guid) { this.guid = guid; this.smallString = SmallGuid.GuidToString(guid); } public SmallGuid(string smallString) { this.guid = SmallGuid.StringToGuid(smallString); this.smallString = smallString; } public Guid Guid { get { return guid; } } public string SmallString { get { return smallString; } } public override string ToString() { return smallString; } public static implicit operator Guid(SmallGuid item) { return item.Guid; } public static implicit operator string(SmallGuid item) { return item.SmallString; } public static SmallGuid NewSmallGuid() { return new SmallGuid(Guid.NewGuid()); } public static string GuidToString(Guid guid) { string ret = string.Empty; byte[] b = guid.ToByteArray(); ret = Convert.ToBase64String(b).Remove(22); return ret; } public static Guid StringToGuid(string smallString) { Guid ret = new Guid(); byte[] b = Convert.FromBase64String(smallString + "=="); ret = new Guid(b); return ret; } } class Program { static void Main(string[] args) { Guid g = new Guid("11111111111111111111111111111111"); Console.WriteLine("Guid: " + g); Console.WriteLine("Guid.Length: " + g.ToString().Length); SmallGuid sg = new SmallGuid(g); Console.WriteLine("SmallGuid: " + sg.SmallString); Console.WriteLine("SmallGuid.Length: " + sg.SmallString.Length); Console.WriteLine("Cast to Guid: "+(Guid)sg); Console.WriteLine("Guid(N).Length: " + ((Guid)sg).ToString("N").Length); Console.ReadKey(); } } }