<PackageReference Include="Microsoft.CSharp" Version="4.7.0-preview2.19523.17" />

CSharpGetIndexBinder

using System; using System.Collections.Generic; using System.Dynamic; namespace Microsoft.CSharp.RuntimeBinder { internal sealed class CSharpGetIndexBinder : GetIndexBinder { private Type _callingContext; private List<CSharpArgumentInfo> _argumentInfo; private RuntimeBinder _binder; internal Type CallingContext => _callingContext; internal IList<CSharpArgumentInfo> ArgumentInfo => _argumentInfo.AsReadOnly(); public CSharpGetIndexBinder(Type callingContext, IEnumerable<CSharpArgumentInfo> argumentInfo) : base(BinderHelper.CreateCallInfo(argumentInfo, 1)) { _callingContext = callingContext; _argumentInfo = BinderHelper.ToList(argumentInfo); _binder = RuntimeBinder.GetInstance(); } public override DynamicMetaObject FallbackGetIndex(DynamicMetaObject target, DynamicMetaObject[] indexes, DynamicMetaObject errorSuggestion) { return BinderHelper.Bind(this, _binder, BinderHelper.Cons(target, indexes), _argumentInfo, errorSuggestion); } } }