public override DynamicMetaObject BindSetMember(SetMemberBinder binder, DynamicMetaObject value)
{
ContractUtils.RequiresNotNull(binder, nameof(binder));
ContractUtils.RequiresNotNull(value, nameof(value));
var originalClass = GetClassEnsureIndex(binder.Name, binder.IgnoreCase, Value !, out var @class, out var index);
return(AddDynamicTestAndDefer
(
binder,
@class,
originalClass,
new DynamicMetaObject
(
Expression.Call
(
_expandoTrySetValue,
GetLimitedSelf(),
Expression.Constant(@class, typeof(object)),
AstUtils.Constant(index),
Expression.Convert(value.Expression, typeof(object)),
Expression.Constant(binder.Name),
AstUtils.Constant(binder.IgnoreCase)
),
BindingRestrictions.Empty
)
));
}