Skip to content

Factory methods renderer: Dynamic binder arguments render as binder instance #47

Description

@zspitz

Whenever the underlying RenderLiteral function encounters something it cannot render, it returns #<typename>, e.g. #CSharpInvokeMemberBinder.

Since these are very much a part of constructing dynamic expressions, it would provide value if instead of this:

// using System.Linq.Expressions.Expression

Dynamic(
    #CSharpInvokeMemberBinder,
    typeof(object), new[] { obj }
)

we could return something like this:

// using System.Linq.Expressions.Expression;
// using static Microsoft.CSharp.RuntimeBinder.Binder;

Dynamic(
    InvokeMember(flags, "Method", new Type[] { }, context, argInfos),
    typeof(object), new[] { obj }
)

Some thoughts:

  • I would want RenderLiteral to allow for extensible behavior. In other words, not every place we use RenderLiteral do we want to return a literal for binders.
  • Particularly since this is only the C# binders; each additional language may have other binders.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    zspitz.utilsDepends on changes to the ZSpitz.Utils library

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions