<kbd id='H69bMxpjXQ8sjda'></kbd><address id='H69bMxpjXQ8sjda'><style id='H69bMxpjXQ8sjda'></style></address><button id='H69bMxpjXQ8sjda'></button>

              <kbd id='H69bMxpjXQ8sjda'></kbd><address id='H69bMxpjXQ8sjda'><style id='H69bMxpjXQ8sjda'></style></address><button id='H69bMxpjXQ8sjda'></button>

                      <kbd id='H69bMxpjXQ8sjda'></kbd><address id='H69bMxpjXQ8sjda'><style id='H69bMxpjXQ8sjda'></style></address><button id='H69bMxpjXQ8sjda'></button>

                              <kbd id='H69bMxpjXQ8sjda'></kbd><address id='H69bMxpjXQ8sjda'><style id='H69bMxpjXQ8sjda'></style></address><button id='H69bMxpjXQ8sjda'></button>

                                      <kbd id='H69bMxpjXQ8sjda'></kbd><address id='H69bMxpjXQ8sjda'><style id='H69bMxpjXQ8sjda'></style></address><button id='H69bMxpjXQ8sjda'></button>

                                              <kbd id='H69bMxpjXQ8sjda'></kbd><address id='H69bMxpjXQ8sjda'><style id='H69bMxpjXQ8sjda'></style></address><button id='H69bMxpjXQ8sjda'></button>

                                                      <kbd id='H69bMxpjXQ8sjda'></kbd><address id='H69bMxpjXQ8sjda'><style id='H69bMxpjXQ8sjda'></style></address><button id='H69bMxpjXQ8sjda'></button>

                                                              <kbd id='H69bMxpjXQ8sjda'></kbd><address id='H69bMxpjXQ8sjda'><style id='H69bMxpjXQ8sjda'></style></address><button id='H69bMxpjXQ8sjda'></button>

                                                                  太阳城娱乐城_OSS.Common获取列举字典列表尺度库支持
                                                                  作者:太阳城娱乐城 浏览:872  发布日期:2017-12-10

                                                                  上篇()先容了OSS.Common的尺度库支持扩展,也罗列了也许碰着题目的办理方案。因为时刻有限,同时.net standard暂且还没有提供对DeionAttribute的支持,以是个中的转化列举到字典列表的扩展其时凭证第一种处理赏罚方法先行屏障,这次凭证第三种方法完美一下。

                                                                  既然.net standard 下没有提供对DeAttribute的支持,,起首我先自界说一个Attribute来增补:

                                                                  [AttributeUsage(AttributeTargets.All, AllowMultiple = true, Inherited = true)]

                                                                  publicclassOSDeAttribute : Attribute {

                                                                  publicOSDeAttribute( stringdeion) {

                                                                  this.Deion = deion; }

                                                                  publicstringDeion { get; set; } }

                                                                  其次界说一个线程安详的字典,来全局缓存列举对应的列举字典列表,镌汰下次获取的代码执行:

                                                                  privatestaticConcurrentDictionary< string, Dictionary< string, string>> enumDirs

                                                                  = newConcurrentDictionary< string, Dictionary< string, string>>();

                                                                  最后我们来实现获取字典部门的详细操纵:

                                                                  publicstaticDictionary< string, string> ToEnumDirs( thisType enType,

                                                                  boolisIntValue = true) { #ifNETFW if(!enType.IsEnum) #elseif(!enType.GetTypeInfo().IsEnum) #endifthrownewArgumentException( "获取列举字典,参数必需是列举范例!"); stringkey = string.Concat(enType.FullName, isIntValue); Dictionary< string, string> dirs; enumDirs.TryGetValue(key, outdirs);

                                                                  if(dirs != null)

                                                                  returndirs.Copy(); dirs = newDictionary< string, string>();

                                                                  varvalues = Enum.GetValues(enType);

                                                                  foreach( varvalue invalues) {

                                                                  varname = Enum.GetName(enType, value);

                                                                  stringresultValue = isIntValue ? (( int) value).ToString() : value.ToString()

                                                                  ; #ifNETFW

                                                                  varattr = enType.GetField(name)?.GetCustomAttribute<OSDeAttribute>();

                                                                  #elsevarattr = enType.GetTypeInfo().GetDeclaredField(name)?.GetCustomAttribute<OSDeAttribute>(); #endifdirs.Add(resultValue, attr == null? name : attr.Deion); } enumDirs.TryAdd(key, dirs);

                                                                  returndirs.Copy(); }

                                                                  往后我们就可以在全部的营业的代码中举办 typeof(列举范例).ToEnumDirs() 的要领来获取列举对应的字典列表,譬喻:

                                                                  typeof(ResultTypes).ToEnumDirs();

                                                                  若有其余疑问,接待存眷公家号(osscoder):

                                                                • 上一篇:没有了
                                                                • 下一篇:创新引领成长与企业生长研讨会进行