2011-08-15 28 views
0

我有以下类MissingMethodException当没有反射中使用

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的执行甚至不会启动。下面是例外情况msg

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

这怎么会发生?我根本不使用反射,所以这个异常来自哪里? 感谢您的帮助提前

+1

我怀疑你以某种方式编译了不同于你加载的不同版本的库。 – CodesInChaos

+0

这两个程序集在同一目录中? – leppie

回答

1

它看起来就像你在一个点上添加Value.Unit成员,但正在运行的组件包含SaveData()方法针对较旧版本的其他组件,从收到载于本方法。因此运行时期望有一种方法存在,但它不存在。这导致JIT编译SaveData()失败,从而阻止它被执行。

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

+0

我看过引用程序集的对象浏览器方法 - 获取方法存在,并且我也尝试重建和更新引用。问题仍然存在 – Gopher

+1

您是否打开了该程序正在使用的确切程序集?在运行时尝试抛出程序中所有加载程序集的路径(确保在引用此其他程序集中的某种类型以强制运行时加载它)后执行此操作。 – cdhowie

+0

我删除了引用,清理并重新加载解决方案,然后再次添加引用。之后,所有的作品 – Gopher