点评: 程序中通常会有一些错误代码或标识,为了程序中方便这些东西通常不会使用汉字,经常在程序中用的是一些FileError或数字。还有就是在编码中经常使用的枚举标识对象的状态。而通常这些信息会直接的或间接的现实给用户,可用户需要到的是容易理解的汉字描述。以前要么将这
rJXHTML5中文学习网 - HTML5先行者学习网 程序中通常会有一些错误代码或标识,为了程序中方便这些东西通常不会使用汉字,经常在程序中用的是一些FileError或数字。还有就是在编码中经常使用的枚举标识对象的状态。而通常这些信息会直接的或间接的现实给用户,可用户需要到的是容易理解的汉字描述。以前要么将这些标识和枚举的转换规则硬编码到程序中,要么就直接提示给用户。前者没有很好的扩展性,而后者则让用户一头雾水。现可以用流行的XML(配置文件)保存提示信息,然后用一个对象将机器中的内码转换为人们容易理解的信息。
rJXHTML5中文学习网 - HTML5先行者学习网 转换对象如下:
rJXHTML5中文学习网 - HTML5先行者学习网 /**////
rJXHTML5中文学习网 - HTML5先行者学习网 ///翻译类,将内部码翻译成容易理解的中文
rJXHTML5中文学习网 - HTML5先行者学习网 ///
rJXHTML5中文学习网 - HTML5先行者学习网 ///
rJXHTML5中文学习网 - HTML5先行者学习网 ///根据配置文件中的信息,将系统内部码(错误码、成功码)翻译成中文(或人容易理解的语言)。
rJXHTML5中文学习网 - HTML5先行者学习网 ///
rJXHTML5中文学习网 - HTML5先行者学习网 publicstaticclassTranslation
rJXHTML5中文学习网 - HTML5先行者学习网 ...{
rJXHTML5中文学习网 - HTML5先行者学习网 privatestaticSystem.IO.FileSystemWatcherwatcher;
rJXHTML5中文学习网 - HTML5先行者学习网 privatestaticXmlDocumentcontent;
rJXHTML5中文学习网 - HTML5先行者学习网 privatestaticstringconfigFile;
rJXHTML5中文学习网 - HTML5先行者学习网 privatestaticobjectlocker=newobject();
rJXHTML5中文学习网 - HTML5先行者学习网 rJXHTML5中文学习网 - HTML5先行者学习网 /**////
rJXHTML5中文学习网 - HTML5先行者学习网 ///加载配置文件
rJXHTML5中文学习网 - HTML5先行者学习网 ///
rJXHTML5中文学习网 - HTML5先行者学习网 ///
rJXHTML5中文学习网 - HTML5先行者学习网 publicstaticvoidConfigure(stringconfigFile)
rJXHTML5中文学习网 - HTML5先行者学习网 ...{
rJXHTML5中文学习网 - HTML5先行者学习网 LoadFile(configFile);
rJXHTML5中文学习网 - HTML5先行者学习网 if(watcher!=null)
rJXHTML5中文学习网 - HTML5先行者学习网 ...{
rJXHTML5中文学习网 - HTML5先行者学习网 watcher.Dispose();
rJXHTML5中文学习网 - HTML5先行者学习网 }
rJXHTML5中文学习网 - HTML5先行者学习网 watcher=newFileSystemWatcher(Path.GetDirectoryName(configFile),Path.GetFileName(configFile));
rJXHTML5中文学习网 - HTML5先行者学习网 watcher.Changed =newFileSystemEventHandler(watcher_Changed);
rJXHTML5中文学习网 - HTML5先行者学习网 }
rJXHTML5中文学习网 - HTML5先行者学习网 rJXHTML5中文学习网 - HTML5先行者学习网 /**////
rJXHTML5中文学习网 - HTML5先行者学习网 ///加载默认配置文件
rJXHTML5中文学习网 - HTML5先行者学习网 ///
rJXHTML5中文学习网 - HTML5先行者学习网 publicstaticvoidConfigure()
rJXHTML5中文学习网 - HTML5先行者学习网 ...{
rJXHTML5中文学习网 - HTML5先行者学习网 if(System.Web.HttpContext.Current!=null)
rJXHTML5中文学习网 - HTML5先行者学习网 ...{
rJXHTML5中文学习网 - HTML5先行者学习网 Configure(System.Web.HttpContext.Current.Server.MapPath("~/translation.config"));
rJXHTML5中文学习网 - HTML5先行者学习网 }
rJXHTML5中文学习网 - HTML5先行者学习网 else
rJXHTML5中文学习网 - HTML5先行者学习网 ...{
rJXHTML5中文学习网 - HTML5先行者学习网 Configure(System.AppDomain.CurrentDomain.SetupInformation.ApplicationBase "/" "translation.config");
rJXHTML5中文学习网 - HTML5先行者学习网 }
rJXHTML5中文学习网 - HTML5先行者学习网 }
rJXHTML5中文学习网 - HTML5先行者学习网 rJXHTML5中文学习网 - HTML5先行者学习网 /**////
rJXHTML5中文学习网 - HTML5先行者学习网 ///加载文件内容
rJXHTML5中文学习网 - HTML5先行者学习网 ///
rJXHTML5中文学习网 - HTML5先行者学习网 ///
rJXHTML5中文学习网 - HTML5先行者学习网 privatestaticvoidLoadFile(stringconfigFile)
rJXHTML5中文学习网 - HTML5先行者学习网 ...{
rJXHTML5中文学习网 - HTML5先行者学习网 lock(locker)
rJXHTML5中文学习网 - HTML5先行者学习网 ...{
rJXHTML5中文学习网 - HTML5先行者学习网 XmlDocumentdoc=newXmlDocument();
rJXHTML5中文学习网 - HTML5先行者学习网 doc.Load(configFile);
rJXHTML5中文学习网 - HTML5先行者学习网 rJXHTML5中文学习网 - HTML5先行者学习网 content=doc;
rJXHTML5中文学习网 - HTML5先行者学习网 Translation.configFile=configFile;
rJXHTML5中文学习网 - HTML5先行者学习网 }
rJXHTML5中文学习网 - HTML5先行者学习网 }
rJXHTML5中文学习网 - HTML5先行者学习网 rJXHTML5中文学习网 - HTML5先行者学习网 /**////
rJXHTML5中文学习网 - HTML5先行者学习网 ///当文件变更时,从新加载文件
rJXHTML5中文学习网 - HTML5先行者学习网 ///
rJXHTML5中文学习网 - HTML5先行者学习网 ///
rJXHTML5中文学习网 - HTML5先行者学习网 ///
rJXHTML5中文学习网 - HTML5先行者学习网 privatestaticvoidwatcher_Changed(objectsender,FileSystemEventArgse)
rJXHTML5中文学习网 - HTML5先行者学习网 ...{
rJXHTML5中文学习网 - HTML5先行者学习网 LoadFile(configFile);
rJXHTML5中文学习网 - HTML5先行者学习网 }
rJXHTML5中文学习网 - HTML5先行者学习网 rJXHTML5中文学习网 - HTML5先行者学习网 /**////
rJXHTML5中文学习网 - HTML5先行者学习网 ///获取Enum的解释,如果Enum有Flag标记,则使用逗号分隔各个解释
rJXHTML5中文学习网 - HTML5先行者学习网 ///
rJXHTML5中文学习网 - HTML5先行者学习网 ///
rJXHTML5中文学习网 - HTML5先行者学习网 ///
rJXHTML5中文学习网 - HTML5先行者学习网 publicstaticstringGetEnumDescription(EnumenumValue)
rJXHTML5中文学习网 - HTML5先行者学习网 ...{
rJXHTML5中文学习网 - HTML5先行者学习网 returnGetEnumDescription(enumValue,",");
rJXHTML5中文学习网 - HTML5先行者学习网 }
rJXHTML5中文学习网 - HTML5先行者学习网 rJXHTML5中文学习网 - HTML5先行者学习网 /**////
rJXHTML5中文学习网 - HTML5先行者学习网 ///获取Enum的解释,如果Enum有Flag标记,则使用sparator分隔各个解释
rJXHTML5中文学习网 - HTML5先行者学习网 ///
rJXHTML5中文学习网 - HTML5先行者学习网 ///
rJXHTML5中文学习网 - HTML5先行者学习网 ///
rJXHTML5中文学习网 - HTML5先行者学习网 ///
rJXHTML5中文学习网 - HTML5先行者学习网 publicstaticstringGetEnumDescription(EnumenumValue,stringsparator)
rJXHTML5中文学习网 - HTML5先行者学习网 ...{
rJXHTML5中文学习网 - HTML5先行者学习网 Typetype=enumValue.GetType();
rJXHTML5中文学习网 - HTML5先行者学习网 rJXHTML5中文学习网 - HTML5先行者学习网 //检查类型是否有Flags特性
rJXHTML5中文学习网 - HTML5先行者学习网 object[]attrs=type.GetCustomAttributes(typeof(FlagsAttribute),false);
rJXHTML5中文学习网 - HTML5先行者学习网 if(attrs.Length>0)
rJXHTML5中文学习网 - HTML5先行者学习网 ...{
rJXHTML5中文学习网 - HTML5先行者学习网 StringBuilderbuilder=newStringBuilder();
rJXHTML5中文学习网 - HTML5先行者学习网 Arrayarr=Enum.GetValues(type);
rJXHTML5中文学习网 - HTML5先行者学习网 foreach(Enumenuinarr)//循环获取每一个值的解释
rJXHTML5中文学习网 - HTML5先行者学习网 ...{
rJXHTML5中文学习网 - HTML5先行者学习网 if((Convert.ToUInt64(enumValue)&Convert.ToUInt64(enu))==Convert.ToUInt64(enu))//判断是否有这个值
rJXHTML5中文学习网 - HTML5先行者学习网 ...{
rJXHTML5中文学习网 - HTML5先行者学习网 builder.Append(GetEnumDes(type,enu.ToString()));
rJXHTML5中文学习网 - HTML5先行者学习网 builder.Append(sparator);
rJXHTML5中文学习网 - HTML5先行者学习网 }
rJXHTML5中文学习网 - HTML5先行者学习网 }
rJXHTML5中文学习网 - HTML5先行者学习网 if(builder.Length!=0)//拿掉最后的分隔符
rJXHTML5中文学习网 - HTML5先行者学习网 builder.Remove(builder.Length-sparator.Length,sparator.Length);
rJXHTML5中文学习网 - HTML5先行者学习网 returnbuilder.ToString();
rJXHTML5中文学习网 - HTML5先行者学习网 }
rJXHTML5中文学习网 - HTML5先行者学习网 else
rJXHTML5中文学习网 - HTML5先行者学习网 ...{
rJXHTML5中文学习网 - HTML5先行者学习网 returnGetEnumDes(type,enumValue.ToString());
rJXHTML5中文学习网 - HTML5先行者学习网 }
rJXHTML5中文学习网 - HTML5先行者学习网 }
rJXHTML5中文学习网 - HTML5先行者学习网 rJXHTML5中文学习网 - HTML5先行者学习网 /**////
rJXHTML5中文学习网 - HTML5先行者学习网 ///获取某一Enum类型值的解释
rJXHTML5中文学习网 - HTML5先行者学习网 ///
rJXHTML5中文学习网 - HTML5先行者学习网 ///
rJXHTML5中文学习网 - HTML5先行者学习网 ///
rJXHTML5中文学习网 - HTML5先行者学习网 ///
rJXHTML5中文学习网 - HTML5先行者学习网 privatestaticstringGetEnumDes(Typetype,stringvalue)
rJXHTML5中文学习网 - HTML5先行者学习网 ...{
rJXHTML5中文学习网 - HTML5先行者学习网 stringxquery="/translation/enum/" type.FullName "/" value;
rJXHTML5中文学习网 - HTML5先行者学习网 XmlNodenode=content.SelectSingleNode(xquery);
rJXHTML5中文学习网 - HTML5先行者学习网 if(node!=null)
rJXHTML5中文学习网 - HTML5先行者学习网 returnnode.InnerText;
rJXHTML5中文学习网 - HTML5先行者学习网 else
rJXHTML5中文学习网 - HTML5先行者学习网 returnvalue;
rJXHTML5中文学习网 - HTML5先行者学习网 }
rJXHTML5中文学习网 - HTML5先行者学习网 rJXHTML5中文学习网 - HTML5先行者学习网 /**////
rJXHTML5中文学习网 - HTML5先行者学习网 ///翻译指定值
rJXHTML5中文学习网 - HTML5先行者学习网 ///
rJXHTML5中文学习网 - HTML5先行者学习网 ///
rJXHTML5中文学习网 - HTML5先行者学习网 ///
rJXHTML5中文学习网 - HTML5先行者学习网 publicstaticstringGetValueDescription(objectobj)
rJXHTML5中文学习网 - HTML5先行者学习网 ...{
rJXHTML5中文学习网 - HTML5先行者学习网 returnGetValueDescription("default",obj);
rJXHTML5中文学习网 - HTML5先行者学习网 }
rJXHTML5中文学习网 - HTML5先行者学习网 rJXHTML5中文学习网 - HTML5先行者学习网 /**////
rJXHTML5中文学习网 - HTML5先行者学习网 ///在指定组中翻译指定值
rJXHTML5中文学习网 - HTML5先行者学习网 ///
rJXHTML5中文学习网 - HTML5先行者学习网 ///
rJXHTML5中文学习网 - HTML5先行者学习网 ///
rJXHTML5中文学习网 - HTML5先行者学习网 ///
rJXHTML5中文学习网 - HTML5先行者学习网 publicstaticstringGetValueDescription(stringgroup,objectobj)
rJXHTML5中文学习网 - HTML5先行者学习网 ...{
rJXHTML5中文学习网 - HTML5先行者学习网 if(obj==null)
rJXHTML5中文学习网 - HTML5先行者学习网 return"null";
rJXHTML5中文学习网 - HTML5先行者学习网 rJXHTML5中文学习网 - HTML5先行者学习网 stringxquery="/translation/description[@group='" group "']/add[@key='" obj.ToString() "']/@value";
rJXHTML5中文学习网 - HTML5先行者学习网 XmlNodenode=content.SelectSingleNode(xquery);
rJXHTML5中文学习网 - HTML5先行者学习网 if(node==null)
rJXHTML5中文学习网 - HTML5先行者学习网 returnobj.ToString();
rJXHTML5中文学习网 - HTML5先行者学习网 else
rJXHTML5中文学习网 - HTML5先行者学习网 returnnode.Value;
rJXHTML5中文学习网 - HTML5先行者学习网 }
rJXHTML5中文学习网 - HTML5先行者学习网 }