没有使用反射时MissingMethodException

时间:2011-08-15 11:15:36

标签: c# .net

我有以下课程

public class Value
  {
    ...
    public virtual Unit Unit { get; set; }
  }

它在程序集中定义,由主模块引用。在主模块中,有简单的代码

private void SaveData()
 {
   Value value = GetValue();

   //some code here
   Results.Add(new Result
   {
     Unit = (int)value.Unit,
   });
 }

在输入SaveData方法时,我得到了MissingMethod异常。甚至没有启动SaveData的执行。以下是例外消息

  

找不到方法:'Unit Value.get_Unit()'。

怎么会发生这种情况?我根本不使用反射,所以来自这个异常的地方呢? 提前感谢您的帮助

1 个答案:

答案 0 :(得分:1)

看起来您在某一时刻添加了Value.Unit成员,但是在它包含此方法之前,您正在运行包含SaveData()方法的程序集,而该版本对应于此其他程序集的旧版本。因此,运行时期望存在一种方法,但事实并非如此。这导致SaveData()的JIT编译失败,从而阻止它被执行。

仔细检查此应用程序正在使用的所有程序集是否与您的最新版本保持同步。