将动态对象传递给方法

时间:2014-12-10 09:23:11

标签: c# dynamic methods

我在c#中使用dynamic是相当新的,我得到一个奇怪的错误,我希望有人可以帮我解释或解决。

我正在做以下事情:

Class1
{
  Class2 _otherClass = new Class2();

 private void SendToClass2()
 {
   dynamic data =  new ExpandoObject();
   data.value1 = "Hello Wrold";
   data.value2 = some unknown type // (for simplicity let's say another string)   

   _otherClass.UseTheValues(data)
 }
}

Class 2就像

一样构建
Class2
{
  UseTheValues(object T)
  {
    Serialize (T)
  } 
}

我在调试时工作正常,我可以将动态数据视为:

data Dynamic Results: 
[0] {[ Value1, "Hello World" ]}
[1] {[ Value2, value ]}

所以数据似乎是正确创建的, 但是在另一台机器的运行时,我得到一个例外:

  

类型:Action_Error |来自:1级|位置:SendToClass2()

     

CSharp Binder.RuntimeBinderException:'数据'不包含   UseTheValues的定义。

我在这里错过了一些明显的东西吗?

编辑:我应该补充说,错误发生在它被发送到我们的夜间构建之后,它会扰乱变量,函数,方法等,以使局外人更难以看到正在发生的事情完成,错误消息显示为

  

' c2565dssad6f5ds6fsdf65'不包含UseTheValues的定义

我想也许它与" UseTheValues"被视为动态表达式,仅在运行时解析。

编辑2 是的,事实证明它与我们的夜间建设者有关,他们扰乱了代码,但是无法加扰动态表达式,因此当加扰变量尝试时会抛出错误访问方法的(非)加扰版本。

0 个答案:

没有答案