Skip to content

Commit b464f71

Browse files
committed
Use cached MethodInfo
1 parent 46e47a0 commit b464f71

2 files changed

Lines changed: 14 additions & 10 deletions

File tree

Orm/Xtensive.Orm/Orm/Linq/QueryHelper.cs

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
// Copyright (C) 2009-2020 Xtensive LLC.
1+
// Copyright (C) 2009-2020 Xtensive LLC.
22
// This code is distributed under MIT license terms.
33
// See the License.txt file in the project root for more information.
44
// Created by: Denis Krjuchkov
@@ -158,8 +158,7 @@ public static Expression CreateEntitySetQuery(Expression ownerEntity, FieldInfo
158158
var resultSelector = FastExpression.Lambda(innerSelectorParameter, outerSelectorParameter, innerSelectorParameter);
159159

160160
var innerQuery = CreateEntityQuery(elementType);
161-
var joinMethodInfo = WellKnownTypes.Queryable.GetMethods()
162-
.Single(mi => mi.Name==Xtensive.Reflection.WellKnown.Queryable.Join && mi.IsGenericMethod && mi.GetParameters().Length==5)
161+
var joinMethodInfo = WellKnownMembers.Queryable.Join
163162
.MakeGenericMethod(new[] {
164163
connectorType,
165164
elementType,

Orm/Xtensive.Orm/Orm/Rse/Transformation/RedundantColumnRemover.cs

Lines changed: 12 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,8 @@ namespace Xtensive.Orm.Rse.Transformation
2020
{
2121
internal sealed class RedundantColumnRemover : ColumnMappingInspector
2222
{
23+
private static readonly System.Reflection.MethodInfo EnumerableSelectMethod;
24+
2325
protected override Pair<CompilableProvider, List<int>> OverrideRightApplySource(ApplyProvider applyProvider, CompilableProvider provider, List<int> requestedMapping)
2426
{
2527
var currentMapping = mappings[applyProvider.Right];
@@ -47,19 +49,22 @@ protected override Provider VisitRaw(RawProvider provider)
4749
private static Expression<Func<ParameterContext, IEnumerable<Tuple>>> RemapRawProviderSource(
4850
Expression<Func<ParameterContext, IEnumerable<Tuple>>> source, MapTransform mappingTransform)
4951
{
50-
var selectMethodInfo = WellKnownTypes.Enumerable
51-
.GetMethods()
52-
.Single(methodInfo => methodInfo.Name == nameof(Enumerable.Select)
53-
&& methodInfo.GetParameters()[1].ParameterType.GetGenericTypeDefinition() == typeof(Func<,>))
54-
.MakeGenericMethod(WellKnownOrmTypes.Tuple, WellKnownOrmTypes.Tuple);
55-
5652
Func<Tuple, Tuple> selector = tuple => mappingTransform.Apply(TupleTransformType.Auto, tuple);
57-
var newExpression = Expression.Call(selectMethodInfo, source.Body, Expression.Constant(selector));
53+
var newExpression = Expression.Call(EnumerableSelectMethod, source.Body, Expression.Constant(selector));
5854
return (Expression<Func<ParameterContext, IEnumerable<Tuple>>>)FastExpression.Lambda(newExpression, source.Parameters[0]);
5955
}
6056

6157
// Constructors
6258

59+
static RedundantColumnRemover()
60+
{
61+
EnumerableSelectMethod = WellKnownTypes.Enumerable
62+
.GetMethods()
63+
.Single(methodInfo => methodInfo.Name == nameof(Enumerable.Select)
64+
&& methodInfo.GetParameters()[1].ParameterType.GetGenericTypeDefinition() == typeof(Func<,>))
65+
.MakeGenericMethod(WellKnownOrmTypes.Tuple, WellKnownOrmTypes.Tuple);
66+
}
67+
6368
public RedundantColumnRemover(CompilableProvider originalProvider)
6469
: base(originalProvider)
6570
{

0 commit comments

Comments
 (0)