DynamicUtils
using Microsoft.CSharp.RuntimeBinder;
using System;
using System.Collections.Generic;
using System.Dynamic;
using System.Linq.Expressions;
using System.Runtime.CompilerServices;
namespace Newtonsoft.Json.Utilities
{
[System.Runtime.CompilerServices.NullableContext(1)]
[System.Runtime.CompilerServices.Nullable(0)]
internal static class DynamicUtils
{
[System.Runtime.CompilerServices.Nullable(0)]
internal static class BinderWrapper
{
public static CallSiteBinder GetMember(string name, Type context)
{
return Binder.GetMember(CSharpBinderFlags.None, name, context, new CSharpArgumentInfo[1] {
CSharpArgumentInfo.Create(CSharpArgumentInfoFlags.None, null)
});
}
public static CallSiteBinder SetMember(string name, Type context)
{
return Binder.SetMember(CSharpBinderFlags.None, name, context, new CSharpArgumentInfo[2] {
CSharpArgumentInfo.Create(CSharpArgumentInfoFlags.UseCompileTimeType, null),
CSharpArgumentInfo.Create(CSharpArgumentInfoFlags.Constant, null)
});
}
}
public static IEnumerable<string> GetDynamicMemberNames(this IDynamicMetaObjectProvider dynamicProvider)
{
return dynamicProvider.GetMetaObject(Expression.Constant(dynamicProvider)).GetDynamicMemberNames();
}
}
}