File: Microsoft\CSharp\RuntimeBinder\ICSharpBinder.cs
Web Access
Project: src\src\libraries\Microsoft.CSharp\src\Microsoft.CSharp.csproj (Microsoft.CSharp)
// Licensed to the .NET Foundation under one or more agreements.
// The .NET Foundation licenses this file to you under the MIT license.
 
using System;
using System.Diagnostics.CodeAnalysis;
using Microsoft.CSharp.RuntimeBinder.Semantics;
 
namespace Microsoft.CSharp.RuntimeBinder
{
    internal interface ICSharpBinder
    {
        CSharpArgumentInfo GetArgumentInfo(int index);
 
        // This is true for any binder that is eligible to take value type receiver
        // objects as a ref (for mutable operations). Such as calls ("v.M(d)"),
        // and indexers ("v[d] = v[d]"). Note that properties are not here because they
        // are only dispatched dynamically when the receiver is dynamic, and hence boxed.
        bool IsBinderThatCanHaveRefReceiver { get; }
 
        [RequiresUnreferencedCode(Binder.TrimmerWarning)]
        void PopulateSymbolTableWithName(Type callingType, ArgumentObject[] arguments);
 
        [RequiresUnreferencedCode(Binder.TrimmerWarning)]
        Expr DispatchPayload(RuntimeBinder runtimeBinder, ArgumentObject[] arguments, LocalVariableSymbol[] locals);
 
        BindingFlag BindingFlags { get; }
 
        string Name { get; }
 
        Type ReturnType { get; }
 
        int GetGetBinderEquivalenceHash();
        bool IsEquivalentTo(ICSharpBinder other);
    }
}