No es un comportamiento extraño con el uso dinámico de C# 4.0:¿Hay algún problema con la palabra clave dinámica en C# 4.0?
using System;
class Program {
public void Baz() { Console.WriteLine("Baz1"); }
static void CallBaz(dynamic x) { x.Baz(); }
static void Main(string[] args) {
dynamic a = new Program();
dynamic b = new { Baz = new Action(() => Console.WriteLine("Baz2")) };
CallBaz(a); // ok
CallBaz(b); // ok
CallBaz(a); // Unhandled Exception:
// Microsoft.CSharp.RuntimeBinder.RuntimeBinderException:
// The name 'Baz' is bound to a method and cannot be used like a property
}
}
estoy usando el Visual Studio 2010 Release Candidate.
¿Esto es un error? Si es verdad, ¿se solucionará en la versión?
Dónde está Eric Lippert: D –
puedo reproducirlo también ... La primera llamada a CallBaz (a) funciona bien, la segunda llamada falla. Parece un error, y uno serio ... –
Interesante.He dejado caer un correo electrónico en una lista apropiada, espero que reciba algo de atención pronto. –