Browse Source

用λ表达式树替代反射

懒得勤快 5 years ago
parent
commit
2b8328c14f

+ 1 - 0
Masuit.LuceneEFCore.SearchEngine/LuceneIndexSearcher.cs

@@ -8,6 +8,7 @@ using Lucene.Net.Store;
 using Lucene.Net.Support;
 using Masuit.LuceneEFCore.SearchEngine.Interfaces;
 using Masuit.LuceneEFCore.SearchEngine.Linq;
+using Microsoft.EntityFrameworkCore.Internal;
 using Microsoft.Extensions.Caching.Memory;
 using System;
 using System.Collections.Generic;

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

@@ -10,11 +10,11 @@
     <Copyright>懒得勤快</Copyright>
     <PackageProjectUrl>https://github.com/ldqk/Masuit.LuceneEFCore.SearchEngine</PackageProjectUrl>
     <PackageId>Masuit.LuceneEFCore.SearchEngine_int</PackageId>
-    <Version>1.0.3.2</Version>
+    <Version>1.0.3.3</Version>
     <Configurations>Debug;Release;String版本;Guid版本;Long版本</Configurations>
     <RunAnalyzersDuringBuild>false</RunAnalyzersDuringBuild>
     <RunAnalyzersDuringLiveAnalysis>false</RunAnalyzersDuringLiveAnalysis>
-    <PackageReleaseNotes>搜索选项增加匹配度阈值设定,默认0.5</PackageReleaseNotes>
+    <PackageReleaseNotes>用λ表达式树替代反射</PackageReleaseNotes>
     <PackageRequireLicenseAcceptance>False</PackageRequireLicenseAcceptance>
     <PublishRepositoryUrl>true</PublishRepositoryUrl>
     <IncludeSymbols>true</IncludeSymbols>

+ 2 - 1
Masuit.LuceneEFCore.SearchEngine/SearchEngine.cs

@@ -9,6 +9,7 @@ using System;
 using System.Collections.Generic;
 using System.Diagnostics;
 using System.Linq;
+using System.Linq.Expressions;
 using System.Reflection;
 using System.Threading.Tasks;
 
@@ -101,7 +102,7 @@ namespace Masuit.LuceneEFCore.SearchEngine
         private ILuceneIndexable GetConcreteFromDocument(Document doc)
         {
             var t = Type.GetType(doc.Get("Type"));
-            var obj = t.Assembly.CreateInstance(t.FullName, true) as ILuceneIndexable;
+            var obj = Expression.Lambda<Func<ILuceneIndexable>>(Expression.New(t.GetConstructors()[0])).Compile()();
             foreach (var p in t.GetProperties().Where(p => p.GetCustomAttributes<LuceneIndexAttribute>().Any()))
             {
                 p.SetValue(obj, doc.Get(p.Name, p.PropertyType));