2017-04-17 108 views
0

我在一個WinForm應用程序工作在4層:拋出異常: 'system.missingMethodException而'

  1. DAL(數據存取)
  2. BOL(經營業務對象)
  3. BAL(經營業務接入)
  4. INT(中級訪問)。

我正在使用中間層運行表示層所需的任何操作,試圖使它獨立,因爲我們可以在WinForm,ASP等中使用它。

我創建了執行這樣的操作的類:(在這種情況下的WinForm)

// Clase: ProjectStatusMID 
using System.Collections.Generic; 

namespace Trevo.FrameWork 
{ 
    public class ProjectStatusMID 
    { 
     #region Propiedades 

     private ProjectStatusBOL _Data = new ProjectStatusBOL(); 
     private ProjectStatusBAL _Operations = new ProjectStatusBAL(); 

     private Acciones _Action = Acciones.Nada; 

     #endregion Propiedades 

     public ProjectStatusBOL Data 
     { 
     get { return _Data; } 
     set 
     { 
      _Data = value; 
     } 
     } 

     public ProjectStatusBAL Operations 
     { 
     get { return _Operations; } 
     set 
     { 
      _Operations = value; 
     } 
     } 

     public Acciones Action 
     { 
     get { return _Action; } 
     set 
     { 
      _Action = value; 
     } 
     } 

     public int IDProject 
     { 
     get { return _Data.IDProject; } 
     set 
     { 
      _Data.IDProject = value; 
     } 
     } 

     public List<Codigos> ProjectsList 
     { 
     get { return LoadProjects(); } 
     } 

     public ProjectStatusMID() 
     { 
     //Load(); 
     } 

     public void Load() 
     { 
     Operations.Consultar(Data); 
     } 

     public List<Codigos> LoadProjects() 
     { 
     List<Codigos> oRet = new List<Codigos>(); 

     MyProjectsBAL _Operations = new MyProjectsBAL(); 
     MyProjectsBOL _Data = new MyProjectsBOL(); 

     List<MyProjectsBOL> _MyList = _Operations.Lista(_Data); 

     foreach (MyProjectsBOL o in _MyList) 
     { 
      oRet.Add(new Codigos(o.IDProject, o.Project)); 
     } 

     return oRet; 
     } 

    } 
} 
// Clase: ProjectStatusMID 

在前端,我們實例化這個類,如下所示:

ProjectStatusMID OO = new ProjectStatusMID(); 

 parProject.DataSource = OO.LoadProjects(); 

一切都被引用,應用程序:

所以,這個問題調用的方法之一,當談到編譯沒有任何問題,那麼包含類的項目是一個分離的項目的解決方案(如任何其它層)的一部分,但我們有以下錯誤:

發生system.missingMethodException而 的HResult = -2146233069 消息=沒有encontrado:'System.Collections.Generic.List`1 Trevo.FrameWork.ProjectStatusMID.LoadProjects()'。 源= WorkLoadPresentation 堆棧跟蹤: 烯Trevo.FrameWork.PS_ProjectStatus_Datos.CargarListas() 烯Trevo.FrameWork.PS_ProjectStatus_Datos.PS_ProjectStatus_Datos_Load(對象發件人,EventArgs的)EN C:\用戶\ fbravo \ OneDrive \ Particular_Sistemas \工作負載\ WorkLoadPresentation \ ProjectStatus \ PS_ProjectStatus_Datos.cs:拉利內阿25 的InnerException:

我試圖使類的靜態,重新創建整個應用程序,刪除GAC,等等,但一週寬鬆嘗試不同的東西。

任何幫助將不勝感激

回答

1

可能有幾個問題引用的外部項目的DLL。最常見的是你包含錯誤版本的DLL庫(例如沒有丟失的方法)。最簡單的做法是在反編譯器(例如Reflector)中打開exe文件並逐步完成。

另一個問題可能是錯誤的位(但可能不是)。

+0

瞭解。我幾乎可以肯定的第一個不是。我刪除了我們的服務器和終端中存在的任何WorkLoadMID.dll(庫的名稱)。之後,重新編譯所有問題是一樣的。我會檢查比特數,因爲我沒有嘗試過一件事。謝謝@AngryHacker! – Nane

+0

@Nane使用反編譯器定義你的代碼。 – AngryHacker

+0

似乎。是不是我的專業領域,但會嘗試。再次感謝! – Nane

0

你必須確保你在你的主WinForms應用程序

+0

謝謝,但不是。它在那些使用它的項目中被引用(實際上只有一個)。我已經測試過在主項目中引用它,但也沒有工作。謝謝 – Nane