2012-07-25 77 views
5

目前,甚至没有在我的机器上使用'ExpandoObject'工作的最简单的例子。为什么ExpandoObject不能按预期工作?

两个

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)

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

(from the MSDN examples)失败,并RuntimeBinderException。我认为我错误地配置了一些东西,但是我对这可能是一种损失。

我正在使用.NET v4.0.30319和Visual Studio 2010 SP1 Premium。请询问你可能需要知道的其他事情。 =)

+0

狂野。什么样的项目 - 控制台? – 2012-07-25 13:09:35

+0

是的,它是..我只是试图创建一个新的空的控制台应用程序,它在那里工作!看来,我应该停止重用单个控制台应用程序来处理我所有的黑客行为。谢谢=) – Jens 2012-07-25 13:12:04

+0

啊,它也可以在调试器之外工作..非常奇怪。 – Jens 2012-07-25 13:18:46

回答

2

删除解决方案目录中隐藏的“SolutionName.suo”文件为我解决了这个问题。尽管如此,我仍然不知道为什么会出现这种情况。

编辑: 安德拉斯佐尔坦,谁删除了他的答案,猜对了。我已经“打破所有例外”,并且很愚蠢。 =)

0

问题很简单,Console.WriteLine有太多的重载,所以动态部分不能正确计算出来。 将输出放入一个类型化的变量之前或者只是施放它。 例如

​​
+0

谢谢!不过,这不是。如果在另一个项目中使用完全相同的代码,即使在没有调试器的情况下运行也是如此。 – Jens 2012-07-25 13:19:28

+0

但是,字符串类型确实解决了这个问题。 – 2012-07-25 13:20:54

+0

它不在我的项目中,对不起。 – Jens 2012-07-25 13:28:51

相关问题