diff --git a/Masuit.Tools.Abstractions.xml b/Masuit.Tools.Abstractions.xml
index a6b6908..0892de3 100644
--- a/Masuit.Tools.Abstractions.xml
+++ b/Masuit.Tools.Abstractions.xml
@@ -4,22 +4,6 @@
Masuit.Tools.Abstractions
-
-
- .net core的配置导入
-
-
-
-
- 配置对象
-
-
-
-
- 将配置添加到Masuit.Tools,若未调用,将自动加载默认的appsettings.json
-
-
-
中文字符工具类
@@ -1050,6 +1034,26 @@
值
+
+
+ 添加或更新键值对
+
+
+
+
+ 另一个字典集
+
+
+
+
+ 添加或更新键值对
+
+
+
+
+ 另一个字典集
+
+
添加或更新键值对
@@ -1062,6 +1066,28 @@
更新时的操作
+
+
+ 添加或更新键值对
+
+
+
+
+ 另一个字典集
+ 更新时的操作
+
+
+
+
+ 添加或更新键值对
+
+
+
+
+ 另一个字典集
+ 更新时的操作
+
+
添加或更新键值对
@@ -1081,6 +1107,48 @@
回调方法
+
+
+ 安全的转换成字典集
+
+
+
+
+
+ 键选择器
+ 值选择器
+
+
+
+
+ 安全的转换成字典集
+
+
+
+
+
+ 键选择器
+ 值选择器
+
+
+
+
+ 转换成并发字典集合
+
+
+
+
+
+
+
+
+ 转换成普通字典集合
+
+
+
+
+
+
遍历IEnumerable
@@ -3740,6 +3808,128 @@
裁剪
+
+
+ 默认MIME映射器,可以根据文件扩展名获取标准内容类型。
+
+
+
+
+ 默认Mime - 如果没有找到任何其他映射则作为默认的Mime-Type
+
+
+
+
+ Mime
+
+
+
+
+ 扩展Mime
+
+
+
+
+
+
+ 根据扩展名获取mime type
+
+
+
+
+
+
+ 根据路径获取Mime Type
+
+
+
+
+
+
+ 默认MIME映射器,可以根据文件扩展名获取标准内容类型。
+
+
+
+
+ 默认Mime - 如果没有找到任何其他映射则作为默认的Mime-Type
+
+
+
+
+ 在文件路径中搜索文件扩展名的默认正则表达式
+
+
+
+
+ Mime类型与扩展名的映射字典(Content types)
+
+
+
+
+ mime类型与扩展名的映射关系
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 扩展mime映射规则的标准列表。扩展的具有更高的优先级 - 如果扩展具有与标准项相同的扩展名,则会覆盖默认的mime
+
+
+
+
+
+
+ 返回特定文件扩展名的Content-Type,如果未找到任何对应关系,则返回默认值
+
+
+
+
+
+
+ 返回特定文件扩展名的Content-Type,如果未找到任何对应关系,则返回默认值
+
+
+
+
+
+
+ 根据路径获取MimeType
+
+
+
+
+
+
+ 获取扩展名
+
+
+
+
+
+
+
+
+
+
+
+ 扩展名
+
+
+
+
+ MimeType
+
+
地理信息成分
@@ -5850,7 +6040,7 @@
指定验证码的长度
验证码字符串
-
+
创建验证码的图片
@@ -6248,3 +6438,9 @@
+iagnostics.Process.Id" /> 属性的 。- 或 -没有与此 对象关联的进程。- 或 -您正尝试为远程计算机上运行的进程调用 。此方法仅对本地计算机上运行的进程可用。
+ 未能访问该等待设置。
+ 命令参数无效,必须传入一个控制台能被cmd.exe可执行程序; 如:ping 127.0.0.1
+
+
+
diff --git a/Masuit.Tools.Abstractions/Extensions/BaseType/IDictionaryExtensions.cs b/Masuit.Tools.Abstractions/Extensions/BaseType/IDictionaryExtensions.cs
index b95ca76..f6efe3c 100644
--- a/Masuit.Tools.Abstractions/Extensions/BaseType/IDictionaryExtensions.cs
+++ b/Masuit.Tools.Abstractions/Extensions/BaseType/IDictionaryExtensions.cs
@@ -1,4 +1,5 @@
using System;
+using System.Collections.Concurrent;
using System.Collections.Generic;
namespace Masuit.Tools
@@ -28,6 +29,38 @@ namespace Masuit.Tools
return @this[key];
}
+ ///
+ /// 添加或更新键值对
+ ///
+ ///
+ ///
+ ///
+ /// 另一个字典集
+ ///
+ public static void AddOrUpdate(this IDictionary @this, IDictionary that)
+ {
+ foreach (var item in that)
+ {
+ AddOrUpdate(@this, item.Key, item.Value);
+ }
+ }
+
+ ///
+ /// 添加或更新键值对
+ ///
+ ///
+ ///
+ ///
+ /// 另一个字典集
+ ///
+ public static void AddOrUpdateTo(this IDictionary @this, IDictionary that)
+ {
+ foreach (var item in @this)
+ {
+ AddOrUpdate(that, item.Key, item.Value);
+ }
+ }
+
///
/// 添加或更新键值对
///
@@ -52,6 +85,40 @@ namespace Masuit.Tools
return @this[key];
}
+ ///
+ /// 添加或更新键值对
+ ///
+ ///
+ ///
+ ///
+ /// 另一个字典集
+ /// 更新时的操作
+ ///
+ public static void AddOrUpdate(this IDictionary @this, IDictionary that, Func updateValueFactory)
+ {
+ foreach (var item in that)
+ {
+ AddOrUpdate(@this, item.Key, item.Value, updateValueFactory);
+ }
+ }
+
+ ///
+ /// 添加或更新键值对
+ ///
+ ///
+ ///
+ ///
+ /// 另一个字典集
+ /// 更新时的操作
+ ///
+ public static void AddOrUpdateTo(this IDictionary @this, IDictionary that, Func updateValueFactory)
+ {
+ foreach (var item in @this)
+ {
+ AddOrUpdate(that, item.Key, item.Value, updateValueFactory);
+ }
+ }
+
///
/// 添加或更新键值对
///
@@ -88,5 +155,75 @@ namespace Masuit.Tools
action(item.Key, item.Value);
}
}
+
+ ///
+ /// 安全的转换成字典集
+ ///
+ ///
+ ///
+ ///
+ ///
+ /// 键选择器
+ /// 值选择器
+ ///
+ public static Dictionary ToDictionarySafety(this IEnumerable source, Func keySelector, Func elementSelector)
+ {
+ var dic = new Dictionary();
+ foreach (var item in source)
+ {
+ AddOrUpdate(dic, keySelector(item), elementSelector(item));
+ }
+
+ return dic;
+ }
+
+ ///
+ /// 安全的转换成字典集
+ ///
+ ///
+ ///
+ ///
+ ///
+ /// 键选择器
+ /// 值选择器
+ ///
+ public static ConcurrentDictionary ToConcurrentDictionary(this IEnumerable source, Func keySelector, Func elementSelector)
+ {
+ var dic = new ConcurrentDictionary();
+ foreach (var item in source)
+ {
+ AddOrUpdate(dic, keySelector(item), elementSelector(item));
+ }
+
+ return dic;
+ }
+
+ ///
+ /// 转换成并发字典集合
+ ///
+ ///
+ ///
+ ///
+ ///
+ public static ConcurrentDictionary AsConcurrentDictionary(this Dictionary dic)
+ {
+ var cd = new ConcurrentDictionary();
+ cd.AddOrUpdate(dic);
+ return cd;
+ }
+
+ ///
+ /// 转换成普通字典集合
+ ///
+ ///
+ ///
+ ///
+ ///
+ public static Dictionary AsDictionary(this ConcurrentDictionary dic)
+ {
+ var cd = new Dictionary();
+ cd.AddOrUpdate(dic);
+ return cd;
+ }
}
}
\ No newline at end of file
diff --git a/Masuit.Tools.Abstractions/Masuit.Tools.Abstractions.csproj b/Masuit.Tools.Abstractions/Masuit.Tools.Abstractions.csproj
index 75d060b..a128fa1 100644
--- a/Masuit.Tools.Abstractions/Masuit.Tools.Abstractions.csproj
+++ b/Masuit.Tools.Abstractions/Masuit.Tools.Abstractions.csproj
@@ -37,6 +37,7 @@
+
diff --git a/Masuit.Tools.Core/AspNetCore/Mime/ContentType.cs b/Masuit.Tools.Abstractions/Mime/ContentType.cs
similarity index 100%
rename from Masuit.Tools.Core/AspNetCore/Mime/ContentType.cs
rename to Masuit.Tools.Abstractions/Mime/ContentType.cs
diff --git a/Masuit.Tools.Core/AspNetCore/Mime/DefaultMimeItems.cs b/Masuit.Tools.Abstractions/Mime/DefaultMimeItems.cs
similarity index 100%
rename from Masuit.Tools.Core/AspNetCore/Mime/DefaultMimeItems.cs
rename to Masuit.Tools.Abstractions/Mime/DefaultMimeItems.cs
diff --git a/Masuit.Tools.Core/AspNetCore/Mime/IMimeMapper.cs b/Masuit.Tools.Abstractions/Mime/IMimeMapper.cs
similarity index 100%
rename from Masuit.Tools.Core/AspNetCore/Mime/IMimeMapper.cs
rename to Masuit.Tools.Abstractions/Mime/IMimeMapper.cs
diff --git a/Masuit.Tools.Core/AspNetCore/Mime/MimeMapper.cs b/Masuit.Tools.Abstractions/Mime/MimeMapper.cs
similarity index 72%
rename from Masuit.Tools.Core/AspNetCore/Mime/MimeMapper.cs
rename to Masuit.Tools.Abstractions/Mime/MimeMapper.cs
index c1ad059..6523334 100644
--- a/Masuit.Tools.Core/AspNetCore/Mime/MimeMapper.cs
+++ b/Masuit.Tools.Abstractions/Mime/MimeMapper.cs
@@ -1,5 +1,4 @@
using System.Collections.Generic;
-using System.Linq;
using System.Text.RegularExpressions;
namespace Masuit.Tools.AspNetCore.Mime
@@ -20,14 +19,24 @@ namespace Masuit.Tools.AspNetCore.Mime
private readonly Regex _pathExtensionPattern = new Regex("\\.(\\w*)$");
///
- /// Mime类型的默认字典(Content types)
+ /// Mime类型与扩展名的映射字典(Content types)
///
- public static Dictionary MimeTypes { get; }
+ public static Dictionary MimeTypes { get; } = new Dictionary();
+
+ ///
+ /// mime类型与扩展名的映射关系
+ ///
+ public static Dictionary ExtTypes { get; } = new Dictionary();
static MimeMapper()
{
- MimeTypes = DefaultMimeItems.Items.ToDictionary(item => "." + item.Extension, item => item.MimeType);
+ foreach (var item in DefaultMimeItems.Items)
+ {
+ MimeTypes.AddOrUpdate("." + item.Extension, item.MimeType);
+ ExtTypes.AddOrUpdate(item.MimeType, "." + item.Extension);
+ }
}
+
///
///
///
@@ -55,14 +64,8 @@ namespace Masuit.Tools.AspNetCore.Mime
{
foreach (var mapping in extensions)
{
- if (MimeTypes.ContainsKey(mapping.Extension))
- {
- MimeTypes[mapping.Extension] = mapping.MimeType;
- }
- else
- {
- MimeTypes.Add(mapping.Extension, mapping.MimeType);
- }
+ MimeTypes.AddOrUpdate(mapping.Extension, mapping.MimeType);
+ ExtTypes.AddOrUpdate(mapping.MimeType, mapping.Extension);
}
}
return this;
@@ -80,6 +83,18 @@ namespace Masuit.Tools.AspNetCore.Mime
return MimeTypes.ContainsKey(fileExtension) ? MimeTypes[fileExtension] : DefaultMime;
}
+ ///
+ /// 返回特定文件扩展名的Content-Type,如果未找到任何对应关系,则返回默认值
+ ///
+ ///
+ ///
+ public string GetExtensionFromMime(string mime)
+ {
+ mime = (mime ?? string.Empty).ToLower();
+ mime = mime.Trim().StartsWith(".") ? mime.Replace(".", "") : mime;
+ return ExtTypes.ContainsKey(mime) ? ExtTypes[mime] : "";
+ }
+
///
/// 根据路径获取MimeType
///
diff --git a/Masuit.Tools.Core/AspNetCore/Mime/MimeMappingItem.cs b/Masuit.Tools.Abstractions/Mime/MimeMappingItem.cs
similarity index 100%
rename from Masuit.Tools.Core/AspNetCore/Mime/MimeMappingItem.cs
rename to Masuit.Tools.Abstractions/Mime/MimeMappingItem.cs
diff --git a/NetCoreTest/Program.cs b/NetCoreTest/Program.cs
index c8f505d..891bd20 100644
--- a/NetCoreTest/Program.cs
+++ b/NetCoreTest/Program.cs
@@ -1,4 +1,6 @@
-using Masuit.Tools.Security;
+using Masuit.Tools;
+using Masuit.Tools.AspNetCore.Mime;
+using Masuit.Tools.Security;
using Microsoft.AspNetCore;
using Microsoft.AspNetCore.Hosting;
using System;
@@ -10,6 +12,9 @@ namespace NetCoreTest
{
public static void Main(string[] args)
{
+ MimeMapper.ExtTypes.AddOrUpdate(MimeMapper.MimeTypes);
+ var type = MimeMapper.ExtTypes.AsConcurrentDictionary()[".jpg"];
+ Console.WriteLine(type);
var rsaKey = RsaCrypt.GenerateRsaKeys(RsaKeyType.PKCS8, 2048);
Console.WriteLine(rsaKey.PrivateKey);
Console.WriteLine(rsaKey.PublicKey);