private void Map() { var builder = ExtensionName.Build().ToArray(); foreach (var extensionName in builder) { this.mapedName.Add(extensionName.Name, extensionName); foreach (var t in extensionName.Types) { Dictionary <string, ExtensionName> map; if (!this.mapedType.TryGetValue((int)t, out map)) { map = new Dictionary <string, ExtensionName>(); this.mapedType.Add((int)t, map); } try { map.Add(extensionName.Name, extensionName); } catch (ArgumentException) { throw new Exception($"{nameof(ExtensionNames)}.{extensionName.EnumName} contain same FileTypeAttribute: {nameof(ExtensionNames)}.{t}"); } } } }
public static IEnumerable <ExtensionName> Build() { var values = (ExtensionNames[])Enum.GetValues(typeof(ExtensionNames)); if (values.Length == 0) { yield break; } foreach (var f in typeof(ExtensionNames).GetRuntimeFields()) { if (f.Name == "value__") { continue; // 枚举保留名称 } var types = f.GetCustomAttributes <FileTypeAttribute>().ToArray(); if (types.Length == 0) { throw new Exception($"missing FileTypeAttribute on {nameof(ExtensionNames)}.{f.Name}"); } var ext = new ExtensionName(f.Name, f.GetCustomAttribute <OriginNameAttribute>()?.OriginName) { Types = types.Select(z => z.Type).ToArray() }; yield return(ext); } }
public static IEnumerable<ExtensionName> Build() { var values = (ExtensionNames[])Enum.GetValues(typeof(ExtensionNames)); if (values.Length == 0) yield break; foreach (var f in typeof(ExtensionNames).GetRuntimeFields()) { if (f.Name == "value__") continue; // 枚举保留名称 var types = f.GetCustomAttributes<FileTypeAttribute>().ToArray(); if (types.Length == 0) throw new Exception($"missing FileTypeAttribute on {nameof(ExtensionNames)}.{f.Name}"); var ext = new ExtensionName(f.Name, f.GetCustomAttribute<OriginNameAttribute>()?.OriginName) { Types = types.Select(z => z.Type).ToArray() }; yield return ext; } }