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

Microsoft.CSharp.RuntimeBinder.Semantics.ExpressionBinder

namespace Microsoft.CSharp.RuntimeBinder.Semantics { internal readonly struct ExpressionBinder { private delegate bool ConversionFunc (Expr pSourceExpr, CType pSourceType, CType pDestinationType, bool needsExprDest, out Expr ppDestinationExpr, CONVERTTYPE flags); private delegate Expr PfnBindBinOp (ExpressionBinder binder, ExpressionKind ek, EXPRFLAG flags, Expr op1, Expr op2); private delegate Expr PfnBindUnaOp (ExpressionBinder binder, ExpressionKind ek, EXPRFLAG flags, Expr op); public enum NamedArgumentsKind { None, Positioning, NonTrailing } public BindingContext Context { get; } public bool canConvert(CType src, CType dest); public Expr tryConvert(Expr expr, CType dest); public Expr mustConvert(Expr expr, CType dest); public Expr mustCast(Expr expr, CType dest); public Expr mustCast(Expr expr, CType dest, CONVERTTYPE flags); public ExpressionBinder(BindingContext context); public Expr BindAssignment(Expr op1, Expr op2, bool allowExplicit); public static bool IsMethPropCallable(MethodOrPropertySymbol sym, bool requireUC); public Expr BindStandardBinop(ExpressionKind ek, Expr arg1, Expr arg2); public Expr BindStandardUnaryOperator(OperatorKind op, Expr pArgument); } }