懒得勤快 3 سال پیش
والد
کامیت
e6aa2046f1

+ 25 - 1
Masuit.LuceneEFCore.SearchEngine/Extensions/DocumentExtension.cs

@@ -1,6 +1,7 @@
 using Lucene.Net.Documents;
 using Newtonsoft.Json;
 using System;
+using System.ComponentModel;
 using System.Globalization;
 
 namespace Masuit.LuceneEFCore.SearchEngine.Extensions
@@ -33,11 +34,16 @@ namespace Masuit.LuceneEFCore.SearchEngine.Extensions
         /// <returns></returns>
         private static object ConvertTo(string value, Type type)
         {
-            if (null == value)
+            if (value == null)
             {
                 return default;
             }
 
+            if (value.GetType() == type)
+            {
+                return value;
+            }
+
             if (type.IsEnum)
             {
                 return Enum.Parse(type, value.ToString(CultureInfo.InvariantCulture));
@@ -49,6 +55,24 @@ namespace Masuit.LuceneEFCore.SearchEngine.Extensions
                 return underlyingType!.IsEnum ? Enum.Parse(underlyingType, value.ToString(CultureInfo.CurrentCulture)) : Convert.ChangeType(value, underlyingType);
             }
 
+            var converter = TypeDescriptor.GetConverter(value);
+            if (converter != null)
+            {
+                if (converter.CanConvertTo(type))
+                {
+                    return converter.ConvertTo(value, type);
+                }
+            }
+
+            converter = TypeDescriptor.GetConverter(type);
+            if (converter != null)
+            {
+                if (converter.CanConvertFrom(value.GetType()))
+                {
+                    return converter.ConvertFrom(value);
+                }
+            }
+
             return Convert.ChangeType(value, type);
         }
     }

+ 2 - 2
Masuit.LuceneEFCore.SearchEngine/Masuit.LuceneEFCore.SearchEngine.csproj

@@ -9,7 +9,7 @@
         <Copyright>懒得勤快</Copyright>
         <PackageProjectUrl>https://github.com/ldqk/Masuit.LuceneEFCore.SearchEngine</PackageProjectUrl>
         <PackageId>Masuit.LuceneEFCore.SearchEngine_guid</PackageId>
-        <Version>1.1.8</Version>
+        <Version>1.1.9</Version>
         <Configurations>Debug;Release;String版本;Guid版本;Long版本</Configurations>
         <RunAnalyzersDuringBuild>false</RunAnalyzersDuringBuild>
         <RunAnalyzersDuringLiveAnalysis>false</RunAnalyzersDuringLiveAnalysis>
@@ -38,7 +38,7 @@
         <PackageReference Include="Microsoft.EntityFrameworkCore" Version="5.0.11" />
     </ItemGroup>
     <ItemGroup Condition=" '$(TargetFramework)' == 'net6'">
-        <PackageReference Include="Microsoft.EntityFrameworkCore" Version="6.0.8" />
+        <PackageReference Include="Microsoft.EntityFrameworkCore" Version="6.0.9" />
     </ItemGroup>
 
     <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|AnyCPU'">

+ 9 - 10
WebSearchDemo/Program.cs

@@ -1,16 +1,15 @@
 using Microsoft.AspNetCore.Hosting;
 using Microsoft.Extensions.Hosting;
 
-namespace WebSearchDemo
+namespace WebSearchDemo;
+
+public class Program
 {
-    public class Program
+    public static void Main(string[] args)
     {
-        public static void Main(string[] args)
-        {
-            CreateWebHostBuilder(args).Build().Run();
-        }
-
-        public static IHostBuilder CreateWebHostBuilder(string[] args) =>
-            Host.CreateDefaultBuilder(args).ConfigureWebHostDefaults(builder => builder.UseStartup<Startup>());
+        CreateWebHostBuilder(args).Build().Run();
     }
-}
+
+    public static IHostBuilder CreateWebHostBuilder(string[] args) =>
+        Host.CreateDefaultBuilder(args).ConfigureWebHostDefaults(builder => builder.UseStartup<Startup>());
+}

+ 2 - 2
WebSearchDemo/WebSearchDemo.csproj

@@ -13,8 +13,8 @@
   </PropertyGroup>
 
   <ItemGroup>
-    <PackageReference Include="Microsoft.AspNetCore.Mvc.NewtonsoftJson" Version="6.0.8" />
-    <PackageReference Include="Microsoft.EntityFrameworkCore.InMemory" Version="6.0.8" />
+    <PackageReference Include="Microsoft.AspNetCore.Mvc.NewtonsoftJson" Version="6.0.9" />
+    <PackageReference Include="Microsoft.EntityFrameworkCore.InMemory" Version="6.0.9" />
     <PackageReference Include="Swashbuckle.AspNetCore" Version="6.4.0" />
   </ItemGroup>