41 return Value.GetDynamicMemberNames();
83 DynamicMetaObject errorSuggestion =
BuildCallMethodWithResult(
CachedReflectionInfo.
DynamicObject_TryInvokeMember,
binder,
DynamicMetaObject.
GetExpressions(
args),
BuildCallMethodWithResult(
CachedReflectionInfo.
DynamicObject_TryGetMember,
new GetBinderAdapter(
binder),
s_noArgs,
binder.FallbackInvokeMember(
this,
args,
null), (
MetaDynamic @
this,
GetMemberBinder ignored,
DynamicMetaObject e) =>
binder.FallbackInvoke(e,
args,
null)),
null);
160 for (
int i = 0; i <
args.Length; i++)
170 for (
int i = 0; i <
args.Length; i++)
252 Expression expression =
System.
Linq.
Expressions.
Expression.
Condition(
test,
ifTrue,
System.
Linq.
Expressions.
Expression.
Throw(
System.
Linq.
Expressions.
Expression.
New(
CachedReflectionInfo.
InvalidCastException_Ctor_String,
new TrueReadOnlyCollection<Expression>(
System.
Linq.
Expressions.
Expression.
Call(
CachedReflectionInfo.
String_Format_String_ObjectArray,
System.
Linq.
Expressions.
Expression.
Constant(
value),
System.
Linq.
Expressions.
Expression.
NewArrayInit(
typeof(
object),
new TrueReadOnlyCollection<Expression>(
System.
Linq.
Expressions.
Expression.
Condition(
System.
Linq.
Expressions.
Expression.
Equal(
dynamicMetaObject.Expression,
System.
Linq.
Expressions.
Utils.
Null),
System.
Linq.
Expressions.
Expression.
Constant(
"null"),
System.
Linq.
Expressions.
Expression.
Call(
dynamicMetaObject.Expression,
CachedReflectionInfo.
Object_GetType),
typeof(
object))))))),
binder.ReturnType),
binder.ReturnType);
259 return new DynamicMetaObject(
System.
Linq.
Expressions.
Expression.
Block(
new TrueReadOnlyCollection<ParameterExpression>(
parameterExpression,
parameterExpression2),
new TrueReadOnlyCollection<Expression>((
method !=
CachedReflectionInfo.
DynamicObject_TryBinaryOperation) ?
System.
Linq.
Expressions.
Expression.
Assign(
parameterExpression2,
System.
Linq.
Expressions.
Expression.
NewArrayInit(
typeof(
object),
convertedArgs)) :
System.
Linq.
Expressions.
Expression.
Assign(
parameterExpression2,
convertedArgs[0]),
System.
Linq.
Expressions.
Expression.
Condition(
System.
Linq.
Expressions.
Expression.
Call(
GetLimitedSelf(),
method,
BuildCallArgs(
binder,
args,
parameterExpression2,
parameterExpression)),
System.
Linq.
Expressions.
Expression.
Block((
method !=
CachedReflectionInfo.
DynamicObject_TryBinaryOperation) ?
ReferenceArgAssign(
parameterExpression2,
args) :
System.
Linq.
Expressions.
Utils.
Empty,
dynamicMetaObject.Expression),
fallbackResult.Expression,
binder.ReturnType))),
GetRestrictions().
Merge(
dynamicMetaObject.Restrictions).
Merge(
fallbackResult.Restrictions));
268 DynamicMetaObject errorSuggestion =
new DynamicMetaObject(
System.
Linq.
Expressions.
Expression.
Block(
new TrueReadOnlyCollection<ParameterExpression>(
parameterExpression,
parameterExpression2),
new TrueReadOnlyCollection<Expression>(
System.
Linq.
Expressions.
Expression.
Assign(
parameterExpression2,
System.
Linq.
Expressions.
Expression.
NewArrayInit(
typeof(
object),
convertedArgs)),
System.
Linq.
Expressions.
Expression.
Condition(
System.
Linq.
Expressions.
Expression.
Call(
GetLimitedSelf(),
method,
BuildCallArgs(
binder,
args,
parameterExpression2,
System.
Linq.
Expressions.
Expression.
Assign(
parameterExpression,
System.
Linq.
Expressions.
Expression.
Convert(
value,
typeof(
object))))),
System.
Linq.
Expressions.
Expression.
Block(
ReferenceArgAssign(
parameterExpression2,
args),
parameterExpression),
dynamicMetaObject.Expression,
typeof(
object)))),
GetRestrictions().Merge(
dynamicMetaObject.Restrictions));
277 DynamicMetaObject errorSuggestion =
new DynamicMetaObject(
System.
Linq.
Expressions.
Expression.
Block(
new TrueReadOnlyCollection<ParameterExpression>(
parameterExpression),
new TrueReadOnlyCollection<Expression>(
System.
Linq.
Expressions.
Expression.
Assign(
parameterExpression,
System.
Linq.
Expressions.
Expression.
NewArrayInit(
typeof(
object),
convertedArgs)),
System.
Linq.
Expressions.
Expression.
Condition(
System.
Linq.
Expressions.
Expression.
Call(
GetLimitedSelf(),
method,
BuildCallArgs(
binder,
args,
parameterExpression,
null)),
System.
Linq.
Expressions.
Expression.
Block(
ReferenceArgAssign(
parameterExpression,
args),
System.
Linq.
Expressions.
Utils.
Empty),
dynamicMetaObject.Expression,
typeof(
void)))),
GetRestrictions().Merge(
dynamicMetaObject.Restrictions));
281 [
UnconditionalSuppressMessage(
"ReflectionAnalysis",
"IL2075:UnrecognizedReflectionPattern", Justification =
"This is looking if the method is overriden on an instantiated type. An overriden method will never be trimmed if the virtual method exists.")]
286 for (
int i = 0; i <
array.Length; i++)
306 return base.Expression;
386 return Array.Empty<
string>();
void Add(TKey key, TValue value)
BindingRestrictions Merge(BindingRestrictions restrictions)
static readonly BindingRestrictions Empty
static BindingRestrictions GetTypeRestriction(Expression expression, Type type)
virtual bool TryConvert(ConvertBinder binder, out object? result)
virtual bool TryBinaryOperation(BinaryOperationBinder binder, object arg, out object? result)
virtual IEnumerable< string > GetDynamicMemberNames()
virtual bool TryUnaryOperation(UnaryOperationBinder binder, out object? result)
virtual bool TryInvoke(InvokeBinder binder, object?[]? args, out object? result)
virtual bool TrySetMember(SetMemberBinder binder, object? value)
virtual bool TryDeleteIndex(DeleteIndexBinder binder, object[] indexes)
virtual bool TryGetIndex(GetIndexBinder binder, object[] indexes, out object? result)
virtual bool TryDeleteMember(DeleteMemberBinder binder)
virtual bool TryGetMember(GetMemberBinder binder, out object? result)
virtual bool TryCreateInstance(CreateInstanceBinder binder, object?[]? args, [NotNullWhen(true)] out object? result)
virtual bool TryInvokeMember(InvokeMemberBinder binder, object?[]? args, out object? result)
virtual DynamicMetaObject GetMetaObject(Expression parameter)
virtual bool TrySetIndex(SetIndexBinder binder, object[] indexes, object? value)
static void Requires([DoesNotReturnIf(false)] bool precondition, string paramName)
static bool AreEquivalent(Type t1, Type t2)
static MethodInfo DynamicObject_TryUnaryOperation
static MethodInfo DynamicObject_TrySetMember
static MethodInfo DynamicObject_TrySetIndex
static MethodInfo DynamicObject_TryGetMember
static MethodInfo DynamicObject_TryDeleteMember
static MethodInfo DynamicObject_TryCreateInstance
static ConstructorInfo InvalidCastException_Ctor_String
static MethodInfo DynamicObject_TryBinaryOperation
static MethodInfo DynamicObject_TryInvokeMember
static MethodInfo DynamicObject_TryConvert
static MethodInfo DynamicObject_TryInvoke
static MethodInfo DynamicObject_TryGetIndex
static MethodInfo DynamicObject_TryDeleteIndex
static MethodInfo Object_GetType
static MethodInfo String_Format_String_ObjectArray
static ConstantExpression Constant(object? value)
static BlockExpression Block(Expression arg0, Expression arg1)
static MethodCallExpression Call(MethodInfo method)
static BinaryExpression Assign(Expression left, Expression right)
static BinaryExpression OrElse(Expression left, Expression right)
static ParameterExpression Parameter(Type type)
static ConditionalExpression Condition(Expression test, Expression ifTrue, Expression ifFalse)
static TypeBinaryExpression TypeIs(Expression expression, Type type)
static NewExpression New(ConstructorInfo constructor)
static UnaryExpression Convert(Expression expression, Type type)
static BinaryExpression ArrayIndex(Expression array, Expression index)
static NewArrayExpression NewArrayInit(Type type, params Expression[] initializers)
static BinaryExpression Equal(Expression left, Expression right)
static UnaryExpression Throw(Expression? value)
static string DynamicObjectResultNotAssignable(object p0, object p1, object p2, object p3)
static readonly ConstantExpression Null
static ConstantExpression Constant(bool value)
static readonly DefaultExpression Empty
static ? Type GetUnderlyingType(Type nullableType)