2011-08-15 32 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