【问题标题】:Exception thrown: 'System.MissingMethodException'抛出异常:'System.MissingMethodException'
【发布时间】:2017-04-17 20:38:00
【问题描述】:

我在一个 4 层的 WinForm 应用程序中工作:

  1. DAL(数据访问)
  2. BOL(业务对象)
  3. BAL(业务访问)
  4. INT(中间访问)。

我正在使用中间层来运行表示层所需的任何操作,试图使其独立,因为我们可以在 WinForm、ASP 等中使用它。

我创建了一个执行这些操作的类,如下所示:

// 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

在前端(在本例中为 WinForm),我们将此类实例化如下:

 ProjectStatusMID OO = new ProjectStatusMID();

因此,调用其中一种方法时会出现问题:

     parProject.DataSource = OO.LoadProjects();

所有内容都被引用,应用程序编译没有任何问题,包含该类的项目是单独项目中解决方案的一部分(与任何其他层一样),但我们有以下错误:

System.MissingMethodException 发生 H结果=-2146233069 Message=Método no encontrado:'System.Collections.Generic.List`1 Trevo.FrameWork.ProjectStatusMID.LoadProjects()'。 源 = WorkLoadPresentation 堆栈跟踪: zh Trevo.FrameWork.PS_ProjectStatus_Datos.CargarListas() en Trevo.FrameWork.PS_ProjectStatus_Datos.PS_ProjectStatus_Datos_Load(Object sender, EventArgs e) en C:\Users\fbravo\OneDrive\Particular_Sistemas\WorkLoad\WorkLoadPresentation\ProjectStatus\PS_ProjectStatus_Datos.cs:línea 25 内部异常:

我尝试过使课程静态化,重新创建整个应用程序,删除 GAC 等等,但一周后尝试不同的事情。

任何帮助将不胜感激

【问题讨论】:

    标签: c# visual-studio-2015 .net-4.6.1


    【解决方案1】:

    可能是几个问题。最常见的是您包含了错误版本的 DLL 库(例如,没有缺少的方法)。最简单的方法是在反编译器(例如 Reflector)中打开 exe 并单步执行。

    另一个问题可能是位数错误(但可能不是)。

    【讨论】:

    • 明白了。我几乎可以肯定第一个不是。我已经删除了我们的服务器和终端中存在的所有 WorkLoadMID.dll(库的名称)。之后,重新编译所有,问题是一样的。我会检查位数,因为这是我没有尝试过的一件事。谢谢@AngryHacker!
    • @Nane Definetely 使用反编译器遍历您的代码。
    • 似乎。不是我的专长领域,但会尝试。再次感谢!
    • 就是这样。正在加载旧版本的 DLL。谢谢和抱歉
    【解决方案2】:

    您必须确保在您的主 Winforms 应用程序中引用了外部项目 dll

    【讨论】:

    • 谢谢,但不是。它在那些使用它的项目中被引用(实际上只有一个)。我已经测试在主项目中引用它,但也没有工作。谢谢
    猜你喜欢
    • 1970-01-01
    • 2013-05-24
    • 2011-05-30
    • 1970-01-01
    • 2020-01-04
    • 2011-02-25
    • 2012-01-24
    相关资源
    最近更新 更多