Przeglądaj źródła

1.修正mime类型的bug;
2.扩展IDictionary

懒得勤快 5 lat temu
rodzic
commit
3ea9ff9e4e

+ 128 - 100
Masuit.Tools.Abstractions.xml

@@ -4,22 +4,6 @@
         <name>Masuit.Tools.Abstractions</name>
     </assembly>
     <members>
-        <member name="T:Masuit.Tools.Core.Config.ConfigHelper">
-            <summary>
-            .net core的�置导入
-            </summary>
-        </member>
-        <member name="P:Masuit.Tools.Core.Config.ConfigHelper.Configuration">
-            <summary>
-            �置对象
-            </summary>
-        </member>
-        <member name="M:Masuit.Tools.Core.Config.ConfigHelper.AddToMasuitTools(Microsoft.Extensions.Configuration.IConfiguration)">
-            <summary>
-            将�置添加到Masuit.Tools,若未调用,将自动加载默认的appsettings.json
-            </summary>
-            <param name="config"></param>
-        </member>
         <member name="T:Masuit.Tools.Core.ChineseString">
             <summary>
             中文字符工具类
@@ -860,7 +844,20 @@
             </summary>
             <param name="_"></param>
             <param name="month">月份</param>
-            <p        将时间格�化� 时分秒 的形�,如果时间为null,返回当�系统时间
+            <param name="firstDay">第一天</param>
+            <param name="lastDay">最�一天</param>
+        </member>
+        <member name="M:Masuit.Tools.DateTimeExt.TimeHelper.GetFormatDate(System.DateTime,System.Char)">
+            <summary>
+            将时间格�化� 年月日 的形�,如果时间为null,返回当�系统时间
+            </summary>
+            <param name="dt">年月日分隔符</param>
+            <param name="separator">分隔符</param>
+            <returns>xxxx年xx月xx日</returns>
+        </member>
+        <member name="M:Masuit.Tools.DateTimeExt.TimeHelper.GetFormatTime(System.DateTime,System.Char)">
+            <summary>
+            将时间格�化� 时分秒 的形�,如果时间为null,返回当�系统时间
             </summary>
             <param name="dt">当�日期时间对象</param>
             <param name="separator">分隔符</param>
@@ -1069,6 +1066,18 @@
             <param name="updateValueFactory">更新时的�作</param>
             <returns></returns>
         </member>
+        <member name="M:Masuit.Tools.IDictionaryExtensions.AddOrUpdate``2(System.Collections.Generic.IDictionary{``0,``1},``0,``1,``1)">
+            <summary>
+            添加或更新键值对
+            </summary>
+            <typeparam name="TKey"></typeparam>
+            <typeparam name="TValue"></typeparam>
+            <param name="this"></param>
+            <param name="key">é”®</param>
+            <param name="addValue">添加时的值</param>
+            <param name="updateValue">更新时的值</param>
+            <returns></returns>
+        </member>
         <member name="M:Masuit.Tools.IDictionaryExtensions.AddOrUpdate``2(System.Collections.Generic.IDictionary{``0,``1},System.Collections.Generic.IDictionary{``0,``1},System.Func{``0,``1,``1})">
             <summary>
             添加或更新键值对
@@ -1110,6 +1119,16 @@
             <param name="dic"></param>
             <param name="action">回调方法</param>
         </member>
+        <member name="M:Masuit.Tools.IDictionaryExtensions.ToDictionarySafety``2(System.Collections.Generic.IEnumerable{``0},System.Func{``0,``1})">
+            <summary>
+            安全的转��字典集
+            </summary>
+            <typeparam name="TSource"></typeparam>
+            <typeparam name="TKey"></typeparam>
+            <param name="source"></param>
+            <param name="keySelector">键选择器</param>
+            <returns></returns>
+        </member>
         <member name="M:Masuit.Tools.IDictionaryExtensions.ToDictionarySafety``3(System.Collections.Generic.IEnumerable{``0},System.Func{``0,``1},System.Func{``0,``2})">
             <summary>
             安全的转��字典集
@@ -1122,6 +1141,17 @@
             <param name="elementSelector">值选择器</param>
             <returns></returns>
         </member>
+        <member name="M:Masuit.Tools.IDictionaryExtensions.ToConcurrentDictionary``2(System.Collections.Generic.IEnumerable{``0},System.Func{``0,``1})">
+            <summary>
+            安全的转��字典集
+            </summary>
+            <typeparam name="TSource"></typeparam>
+            <typeparam name="TKey"></typeparam>
+            <typeparam name="TElement"></typeparam>
+            <param name="source"></param>
+            <param name="keySelector">键选择器</param>
+            <returns></returns>
+        </member>
         <member name="M:Masuit.Tools.IDictionaryExtensions.ToConcurrentDictionary``3(System.Collections.Generic.IEnumerable{``0},System.Func{``0,``1},System.Func{``0,``2})">
             <summary>
             安全的转��字典集
@@ -1839,21 +1869,6 @@
             <param name="Key">关键字</param>
             <param name="Value">值</param>
         </member>
-        <member name="M:Masuit.Tools.Files.INIFile.IniReadValue(System.String,ber>
-        <member name="M:Masuit.Tools.Files.INIFile.#ctor(System.String)">
-            <summary>
-            传入INI文件路径构造对象
-            </summary>
-            <param name="INIPath">INI文件路径</param>
-        </member>
-        <member name="M:Masuit.Tools.Files.INIFile.IniWriteValue(System.String,System.String,System.String)">
-            <summary>
-            写INI文件
-            </summary>
-            <param name="Section">分组节点</param>
-            <param name="Key">关键字</param>
-            <param name="Value">值</param>
-        </member>
         <member name="M:Masuit.Tools.Files.INIFile.IniReadValue(System.String,System.String)">
             <summary>
             读�INI文件
@@ -2777,7 +2792,19 @@
             </summary>
             <param name="typeOfSource">�类型</param>
             <param name="typeOfTarget">目标类型</param>
-            <param name="throwExceptionOnNoFound">如果没找到是å�查并é…�ç½®mapper
+            <param name="throwExceptionOnNoFound">如果没找到是�需�抛出异常</param>
+            <param name="name">mapper别�</param>
+            <returns></returns>
+            <exception cref="T:Masuit.Tools.Mapping.Exceptions.NoFoundMapperException"></exception>
+        </member>
+        <member name="M:Masuit.Tools.Mapping.Core.MapperConfigurationBase.CreateCommonMember">
+            <summary>
+            创建公共�员
+            </summary>
+        </member>
+        <member name="M:Masuit.Tools.Mapping.Core.MapperConfigurationBase.CheckAndConfigureMapping(System.Tuple{System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Boolean,System.String}@)">
+            <summary>
+            检查并�置mapper
             </summary>
             <param name="configExpression">�置表达�树</param>
             <exception cref="T:Masuit.Tools.Mapping.Exceptions.NotSameTypePropertyException">
@@ -3315,21 +3342,6 @@
             表达�树扩展
              </summary>
         </member>
-        <member name="M:Masuit.Tools.Mapping.Extensions.ExpressionExtentions.ConvertTo``1(System.Linq.Expressions.Expression{System.Func{``0,System.Object}},System.Type)">
-            <summary>
-            转�
-            </summary>
-            <typeparam name="TFrom">�类型</typeparam>
-            <par"M:Masuit.Tools.Mapping.ExpressionMapper.GetPropertiesNotMapped``2(System.String)">
-            <summary>
-            获�未映射的属性
-            </summary>
-        </member>
-        <member name="T:Masuit.Tools.Mapping.Extensions.ExpressionExtentions">
-             <summary>
-            表达�树扩展
-             </summary>
-        </member>
         <member name="M:Masuit.Tools.Mapping.Extensions.ExpressionExtentions.ConvertTo``1(System.Linq.Expressions.Expression{System.Func{``0,System.Object}},System.Type)">
             <summary>
             转�
@@ -4257,7 +4269,29 @@
         </member>
         <member name="P:Masuit.Tools.Models.PhysicsAddress.Status">
             <summary>
-            返回状�,0正
+            返回状�,0正常,1出错
+            </summary>
+        </member>
+        <member name="P:Masuit.Tools.Models.PhysicsAddress.AddressResult">
+            <summary>
+            返回结果集
+            </summary>
+        </member>
+        <member name="T:Masuit.Tools.Models.Pois">
+            <summary>
+            �考�置
+            </summary>
+        </member>
+        <member name="P:Masuit.Tools.Models.Pois.AddressDetail">
+            <summary>
+            地��置详细
+            </summary>
+        </member>
+        <member name="P:Masuit.Tools.Models.Pois.Direction">
+            <summary>
+            方�
+            </summary>
+        </member>
         <member name="P:Masuit.Tools.Models.Pois.Distance">
             <summary>
             �离
@@ -4432,22 +4466,6 @@
             </summary>
             <returns></returns>
         </member>
-        <member name="M:Masuit.Tools.Net.FtpClient.GetDirectories(System.String)">
-            <summary>
-            获�当�目录下所有的文件夹列表(仅文件夹)
-            </summary>
-            <returnt.FtpClient.GetFilesDetails(System.String)">
-            <summary>
-            获�当�目录下明细(包�文件和文件夹)
-            </summary>
-            <returns></returns>
-        </member>
-        <member name="M:Masuit.Tools.Net.FtpClient.GetFiles(System.String,System.String)">
-            <summary>
-            获�当�目录下文件列表(仅文件)
-            </summary>
-            <returns></returns>
-        </member>
         <member name="M:Masuit.Tools.Net.FtpClient.GetDirectories(System.String)">
             <summary>
             获�当�目录下所有的文件夹列表(仅文件夹)
@@ -4540,7 +4558,26 @@
             第几部分
             </summary>
         </member>
-  er>
+        <member name="P:Masuit.Tools.Net.MultiThreadDownloader.TotalBytesReceived">
+            <summary>
+            已接收字节数
+            </summary>
+        </member>
+        <member name="P:Masuit.Tools.Net.MultiThreadDownloader.TotalProgress">
+            <summary>
+            总进度
+            </summary>
+        </member>
+        <member name="P:Masuit.Tools.Net.MultiThreadDownloader.Size">
+            <summary>
+            文件大�
+            </summary>
+        </member>
+        <member name="P:Masuit.Tools.Net.MultiThreadDownloader.TotalSpeedInBytes">
+            <summary>
+            下载速度
+            </summary>
+        </member>
         <member name="P:Masuit.Tools.Net.MultiThreadDownloader.PartialDownloaderList">
             <summary>
             下载�
@@ -5013,23 +5050,6 @@
             是�是已�添加过的��值
             </summary>
         </member>
-        <member name="M:Masuit.Tools.RandomSelector.WeightedSelector`1.Add(Masuit.Tools.RandomSelector.WeightedItem{`0})">
-            <summary>
-            添加元素
-            </summary>
-            mary>
-            <typeparam name="T"></typeparam>
-        </member>
-        <member name="F:Masuit.Tools.RandomSelector.WeightedSelector`1.CumulativeWeights">
-            <summary>
-            累计��集
-            </summary>
-        </member>
-        <member name="F:Masuit.Tools.RandomSelector.WeightedSelector`1._isAddedCumulativeWeights">
-            <summary>
-            是�是已�添加过的��值
-            </summary>
-        </member>
         <member name="M:Masuit.Tools.RandomSelector.WeightedSelector`1.Add(Masuit.Tools.RandomSelector.WeightedItem{`0})">
             <summary>
             添加元素
@@ -5101,7 +5121,18 @@
         </member>
         <member name="M:Masuit.Tools.Reflection.ClassHelper.BuildType">
             <summary>
-            创建一个没有æˆ�员的类åžropertyInfo})">
+            创建一个没有�员的类型的实例,类�为"DefaultClass"。
+            </summary>
+            <returns>返回创建的类型的实例。</returns>
+        </member>
+        <member name="M:Masuit.Tools.Reflection.ClassHelper.BuildType(System.String)">
+            <summary>
+            根�类�创建一个没有�员的类型的实例。
+            </summary>
+            <param name="className">将�创建的类型的实例的类�。</param>
+            <returns>返回创建的类型的实例。</returns>
+        </member>
+        <member name="M:Masuit.Tools.Reflection.ClassHelper.AddProperty(System.Type,System.Collections.Generic.List{Masuit.Tools.Reflection.ClassHelper.CustPropertyInfo})">
             <summary>
             添加属性到类型的实例,注�:该�作会将其它�员清除掉,其功能有待完善。
             </summary>
@@ -5174,21 +5205,6 @@
             <param name="property">属性�</param>
             <returns></returns>
         </member>
-        <member name="M:Masuit.Tools.Reflection.ClassHelper.MergePropert  <summary>
-            删除对象的属性并返回新对象实例
-            </summary>
-            <param name="obj"></param>
-            <param name="propertyNames">属性�集�</param>
-            <returns></returns>
-        </member>
-        <member name="M:Masuit.Tools.Reflection.ClassHelper.DeleteProperty(System.Object,System.String)">
-            <summary>
-            删除对象的属性并返回新对象实例
-            </summary>
-            <param name="obj"></param>
-            <param name="property">属性�</param>
-            <returns></returns>
-        </member>
         <member name="M:Masuit.Tools.Reflection.ClassHelper.MergeProperty(System.Type,System.Collections.Generic.List{Masuit.Tools.Reflection.ClassHelper.CustPropertyInfo})">
             <summary>
             把类型的实例t和lcpi�数里的属性进行�并。
@@ -5413,7 +5429,19 @@
         </member>
         <member name="M:Masuit.Tools.Reflection.ReflectionUtil.GetDescription(System.Reflection.MemberInfo)">
             <summary>
-            根��员信�ember>
+            根��员信�获�Description信�
+            </summary>
+            <param name="member">�员信�</param>
+            <returns>如果未找到DescriptionAttribute则返回null或返回类型�述</returns>
+        </member>
+        <member name="M:Masuit.Tools.Reflection.ReflectionUtil.GetDescription(System.Reflection.MemberInfo,System.Object[])">
+            <summary>
+            根��员信�获�Description信�
+            </summary>
+            <param name="member">�员信�</param>
+            <param name="args">格�化��对象</param>
+            <returns>如果未找到DescriptionAttribute则返回null或返回类型�述</returns>
+        </member>
         <member name="M:Masuit.Tools.Reflection.ReflectionUtil.GetAttribute(System.Type,System.Reflection.Assembly)">
             <summary>
             获�对象的Attributes

+ 63 - 0
Masuit.Tools.Abstractions/Extensions/BaseType/IDictionaryExtensions.cs

@@ -85,6 +85,30 @@ namespace Masuit.Tools
             return @this[key];
         }
 
+        /// <summary>
+        /// 添加或更新键值对
+        /// </summary>
+        /// <typeparam name="TKey"></typeparam>
+        /// <typeparam name="TValue"></typeparam>
+        /// <param name="this"></param>
+        /// <param name="key">键</param>
+        /// <param name="addValue">添加时的值</param>
+        /// <param name="updateValue">更新时的值</param>
+        /// <returns></returns>
+        public static TValue AddOrUpdate<TKey, TValue>(this IDictionary<TKey, TValue> @this, TKey key, TValue addValue, TValue updateValue)
+        {
+            if ([email protected](key))
+            {
+                @this.Add(new KeyValuePair<TKey, TValue>(key, addValue));
+            }
+            else
+            {
+                @this[key] = updateValue;
+            }
+
+            return @this[key];
+        }
+
         /// <summary>
         /// 添加或更新键值对
         /// </summary>
@@ -156,6 +180,25 @@ namespace Masuit.Tools
             }
         }
 
+        /// <summary>
+        /// 安全的转换成字典集
+        /// </summary>
+        /// <typeparam name="TSource"></typeparam>
+        /// <typeparam name="TKey"></typeparam>
+        /// <param name="source"></param>
+        /// <param name="keySelector">键选择器</param>
+        /// <returns></returns>
+        public static Dictionary<TKey, TSource> ToDictionarySafety<TSource, TKey>(this IEnumerable<TSource> source, Func<TSource, TKey> keySelector)
+        {
+            var dic = new Dictionary<TKey, TSource>();
+            foreach (var item in source)
+            {
+                AddOrUpdate(dic, keySelector(item), item);
+            }
+
+            return dic;
+        }
+
         /// <summary>
         /// 安全的转换成字典集
         /// </summary>
@@ -177,6 +220,26 @@ namespace Masuit.Tools
             return dic;
         }
 
+        /// <summary>
+        /// 安全的转换成字典集
+        /// </summary>
+        /// <typeparam name="TSource"></typeparam>
+        /// <typeparam name="TKey"></typeparam>
+        /// <typeparam name="TElement"></typeparam>
+        /// <param name="source"></param>
+        /// <param name="keySelector">键选择器</param>
+        /// <returns></returns>
+        public static ConcurrentDictionary<TKey, TSource> ToConcurrentDictionary<TSource, TKey>(this IEnumerable<TSource> source, Func<TSource, TKey> keySelector)
+        {
+            var dic = new ConcurrentDictionary<TKey, TSource>();
+            foreach (var item in source)
+            {
+                AddOrUpdate(dic, keySelector(item), item);
+            }
+
+            return dic;
+        }
+
         /// <summary>
         /// 安全的转换成字典集
         /// </summary>

+ 1 - 3
Masuit.Tools.Abstractions/Mime/MimeMapper.cs

@@ -79,19 +79,17 @@ namespace Masuit.Tools.AspNetCore.Mime
         public string GetMimeFromExtension(string fileExtension)
         {
             fileExtension = (fileExtension ?? string.Empty).ToLower();
-            fileExtension = fileExtension.Trim().StartsWith(".") ? fileExtension.Replace(".", "") : fileExtension;
             return MimeTypes.ContainsKey(fileExtension) ? MimeTypes[fileExtension] : DefaultMime;
         }
 
         /// <summary>
-        /// 返回特定文件扩展名的Content-Type,如果未找到任何对应关系,则返回默认
+        /// 返回特定Content-Type的文件扩展名,如果未找到任何对应关系,则返回空
         /// </summary>
         /// <param name="mime"></param>
         /// <returns></returns>
         public string GetExtensionFromMime(string mime)
         {
             mime = (mime ?? string.Empty).ToLower();
-            mime = mime.Trim().StartsWith(".") ? mime.Replace(".", "") : mime;
             return ExtTypes.ContainsKey(mime) ? ExtTypes[mime] : "";
         }
 

+ 1 - 6
NetCoreTest/Program.cs

@@ -1,6 +1,4 @@
-using Masuit.Tools;
-using Masuit.Tools.AspNetCore.Mime;
-using Masuit.Tools.Security;
+using Masuit.Tools.Security;
 using Microsoft.AspNetCore;
 using Microsoft.AspNetCore.Hosting;
 using System;
@@ -12,9 +10,6 @@ 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);

+ 26 - 0
README.md

@@ -932,6 +932,32 @@ public override Post SavePost(Post t)
 "13123456789".Mask(); // 131****5678
 "[email protected]".MaskEmail(); // a****[email protected]
 ```
+### 39.集合扩展
+```csharp
+var list = new List<string>()
+{
+    "1","3","3","3"
+};
+list.InsertAfter(0, "2"); // 在第一个元素之后插入
+list.InsertAfter(s => s == "1", "2"); // 在元素"1"后插入
+var dic = list.ToDictionarySafety(s => s); // 安全的转换成字典类型,当键重复时只添加一个键
+var dic = list.ToConcurrentDictionary(s => s); // 转换成并发字典类型,当键重复时只添加一个键
+var dic = list.ToDictionarySafety(s => s, s => s.GetHashCode()); // 安全的转换成字典类型,当键重复时只添加一个键
+dic.AddOrUpdate("4", 4); // 添加或更新键值对
+dic.AddOrUpdate(new Dictionary<string, int>()
+{
+    ["5"] = 5,["55"]=555
+}); // 批量添加或更新键值对
+dic.AddOrUpdate("5", 6, (s, i) => 66); // 如果是添加,则值为6,若更新则值为66
+dic.AddOrUpdate("5", 6, 666); // 如果是添加,则值为6,若更新则值为666
+dic.AsConcurrentDictionary(); // 普通字典转换成并发字典集合
+```
+### 40.Mime类型
+```csharp
+var mimeMapper = new MimeMapper();
+var mime = mimeMapper.GetExtensionFromMime("image/jpeg"); // .jpg
+var ext = mimeMapper.GetMimeFromExtension(".jpg"); // image/jpeg
+```
 
 # Asp.Net MVC和Asp.Net Core的支持断点续传和多线程下载的ResumeFileResult