Skip to content

Commit 1591e73

Browse files
committed
Reflection-related extensions revised
- Extensions that might be misinterpret in net6 now has -Ex ending. - TypeHelper.GetConstructor() marked as obsolete - TypeHelper.GetSingleConstructor now throws exception if no constructor or more than one constructor found (as all methods with Single) - TypeHelperGetSingleConstructorOrDefault option added to keep prefious behavior
1 parent 3dceefb commit 1591e73

File tree

11 files changed

+269
-203
lines changed

11 files changed

+269
-203
lines changed

Orm/Xtensive.Orm.Tests/Linq/MemberCompilerProviderTest.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
// Copyright (C) 2003-2010 Xtensive LLC.
1+
// Copyright (C) 2003-2010 Xtensive LLC.
22
// All rights reserved.
33
// For conditions of distribution and use, see license.
44
// Created by: Denis Krjuchkov
@@ -121,7 +121,7 @@ public void GenericFindTest()
121121
provider.RegisterCompilers(typeof(SuperGenericCompiler));
122122

123123
var mi = typeof (SuperGenericTarget<string>)
124-
.GetMethod("Method",
124+
.GetMethodEx("Method",
125125
BindingFlags.Static | BindingFlags.Public,
126126
new[] {"T1"},
127127
new[] {typeof (int), typeof (string), null})

Orm/Xtensive.Orm/IoC/ServiceContainer.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -202,7 +202,7 @@ public static IServiceContainer Create(Type containerType, object configuration,
202202
}
203203

204204
private static ConstructorInfo FindConstructor(Type containerType, params Type[] argumentTypes) =>
205-
containerType.GetSingleConstructor(argumentTypes);
205+
containerType.GetSingleConstructorOrDefault(argumentTypes);
206206

207207
#endregion
208208

Orm/Xtensive.Orm/Orm/Linq/Materialization/ExpressionMaterializer.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -78,7 +78,7 @@ protected override Expression VisitFullTextExpression(FullTextExpression express
7878
var entityMaterializer = Visit(expression.EntityExpression);
7979
var constructorInfo = WellKnownOrmTypes.FullTextMatchOfT
8080
.CachedMakeGenericType(expression.EntityExpression.Type)
81-
.GetConstructor(BindingFlags.NonPublic | BindingFlags.Instance,
81+
.GetConstructorEx(BindingFlags.NonPublic | BindingFlags.Instance,
8282
new object[] {WellKnownTypes.Double, expression.EntityExpression.Type});
8383

8484
return Expression.New(

Orm/Xtensive.Orm/Orm/Linq/MemberCompilation/MemberCompilerProvider.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -237,14 +237,14 @@ private static (MemberInfo targetMember, Delegate compilerInvoker) ProcessCompil
237237

238238
if (!specialCase) {
239239
if (isCtor)
240-
targetMember = targetType.GetConstructor(bindingFlags, parameterTypes);
240+
targetMember = targetType.GetConstructorEx(bindingFlags, parameterTypes);
241241
else if (isField)
242242
targetMember = targetType.GetField(memberName, bindingFlags);
243243
else {
244244
// method / property getter / property setter
245245
var genericArgumentNames = isGenericMethod ? new string[attribute.NumberOfGenericArguments] : null;
246246
targetMember = targetType
247-
.GetMethod(memberName, bindingFlags, genericArgumentNames, parameterTypes);
247+
.GetMethodEx(memberName, bindingFlags, genericArgumentNames, parameterTypes);
248248
}
249249
}
250250

Orm/Xtensive.Orm/Orm/Linq/Translator.Materialization.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ namespace Xtensive.Orm.Linq
2323
{
2424
internal sealed partial class Translator
2525
{
26-
private static readonly MethodInfo VisitLocalCollectionSequenceMethod = typeof(Translator).GetMethod(nameof(VisitLocalCollectionSequence),
26+
private static readonly MethodInfo VisitLocalCollectionSequenceMethod = typeof(Translator).GetMethodEx(nameof(VisitLocalCollectionSequence),
2727
BindingFlags.NonPublic | BindingFlags.Instance,
2828
new[] { "TItem" },
2929
new object[] { WellKnownTypes.Expression });

Orm/Xtensive.Orm/Orm/Linq/WellKnownMembers.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -243,7 +243,7 @@ public static class Collection
243243

244244
private static MethodInfo GetMethod(Type type, string name, int numberOfGenericArgument, int numberOfArguments)
245245
{
246-
var method = type.GetMethod(name,
246+
var method = type.GetMethodEx(name,
247247
BindingFlags.Public | BindingFlags.Static,
248248
new string[numberOfGenericArgument],
249249
new object[numberOfArguments]);

Orm/Xtensive.Orm/Reflection/DelegateHelper.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -372,7 +372,7 @@ public static TDelegate CreateDelegate<TDelegate>(object callTarget, Type type,
372372
string[] genericArgumentNames = new string[genericArgumentTypes.Length]; // Actual names doesn't matter
373373
Type[] parameterTypes = delegateType.GetInvokeMethod().GetParameterTypes();
374374

375-
MethodInfo methodInfo = MethodHelper.GetMethod(type, methodName, bindingFlags,
375+
MethodInfo methodInfo = MethodHelper.GetMethodEx(type, methodName, bindingFlags,
376376
genericArgumentNames, parameterTypes);
377377
if (methodInfo==null)
378378
return null;
@@ -422,7 +422,7 @@ public static TDelegate[] CreateDelegates<TDelegate>(object callTarget, Type typ
422422
string[] genericArgumentNames = new string[1]; // Actual names doesn't matter
423423
Type[] parameterTypes = delegateType.GetInvokeMethod().GetParameterTypes();
424424

425-
MethodInfo methodInfo = MethodHelper.GetMethod(type, methodName, bindingFlags,
425+
MethodInfo methodInfo = MethodHelper.GetMethodEx(type, methodName, bindingFlags,
426426
genericArgumentNames, parameterTypes);
427427
if (methodInfo==null)
428428
return null;

0 commit comments

Comments
 (0)