2012-07-25 15 views
5

Actualmente, ni siquiera los ejemplos más simples de uso del trabajo 'ExpandoObject' en mi máquina.¿Por qué ExpandoObject no funciona como se esperaba?

Tanto

dynamic obj = new ExpandoObject(); 
obj.Value = 10; 
var action = new Action<string>((line) => Console.WriteLine(line)); 
obj.WriteNow = action; 
obj.WriteNow(obj.Value.ToString()); 

(from this website) y

dynamic sampleObject = new ExpandoObject(); 
sampleObject.test = "Dynamic Property"; 
Console.WriteLine(sampleObject.test); 

(from the MSDN examples) fallar con un RuntimeBinderException. Supongo que he configurado mal algo, pero no sé qué podría ser.

Estoy usando .NET v4.0.30319 y Visual Studio 2010 SP1 Premium. Por favor, pregunte por cualquier otra cosa que necesite saber. =)

+0

Salvaje. ¿Qué tipo de proyecto es ese - consola? –

+0

Sí, lo es ... ¡y traté de crear una nueva aplicación de consola vacía, y funciona allí! Debo dejar de reutilizar una sola aplicación de consola para todos mis ataques, parece. Gracias =) – Jens

+0

Ah, y funciona fuera del depurador, también ... Muy extraño. – Jens

Respuesta

2

Al eliminar el archivo oculto "SolutionName.suo" en el directorio de soluciones solucioné este problema por mí.

Todavía no tengo ni idea de por qué ocurrió.

Editar: Andras Zoltan, que borró su respuesta, adivinó correctamente. He activado "Romper todas las excepciones" y estaba siendo estúpido. =)

0

El problema es simplemente que Console.WriteLine tiene demasiadas sobrecargas y por lo tanto la parte dinámica no se puede resolver correctamente. Ponga la salida en una variable tipeada antes o solo empújela. p.

dynamic sampleObject = new ExpandoObject(); 
sampleObject.test = "Dynamic Property"; 
Console.WriteLine((string)sampleObject.test); 
+0

Gracias! Eso no es todo, sin embargo. El mismo código funciona si se usa en otro proyecto, e incluso si se ejecuta sin un depurador. – Jens

+0

Pero la conversión de tipo a cadena soluciona el problema. –

+0

No está en mi proyecto, lo siento. – Jens

Cuestiones relacionadas