C# - 通过接口从插件项目调用主应用程序项目的对象?

时间:2017-07-19 10:16:39

标签: c# dll plugins interface

我有一个主要的应用程序,有一个"表"它实现了界面" ITable"来自dll" Lib":

  • 主要应用

    using Lib;
    
    namespace One
    {
      public class Main
      {
        // Here the method "Work" from the plugin is called with first 
        // parameter a string and second parameter a dictionary with "Table"
        // objects and then it shows here the fault message
        plugin.Work("My Input", tableDictionary)
      }
    
      public class Table : ITable
      {
      }
    }
    
  • 类库 :" Lib"

    namespace Two
    {
      public interface ITable
      {
      }
    }
    
  • 插件-项目

    using Lib;
    
    namespace Three
    {
      public class Example
      {
        public string Work(string input, Dictionary<string, ITable> tableDict)
        {
          // Here i want to use table objects from the main application
          // Do something with the table objects
        }
      }
    }
    

主应用程序的插件是在第二个项目&#34; Plugin-Project&#34;中创建的。它使用dll(因为我想在第二个&#34;插件&#34; -project中使用主要应用程序的对象/类&#34; table&#34;)。我在这里遵循这个插件方法:

Creating a simple plugin mechanism

但是当我在插件项目中使用table-object时,将其导入我的主应用程序并运行主应用程序,我得到的错误是 &#34;无法转换&#34;表&#34; to&#34; ITable&#34;&#34; 运行时不是例外。这只是VisualStudio故障列表中显示的故障。

问题是我想在插件中使用Table对象,就像我可以在主应用程序中使用它一样。因此我使用界面。但是,当我的主应用程序使用Table对象时,我可以使用ITable对象吗?

更新:我对问题描述进行了一些编辑,希望现在更容易理解。 (也删除了插件中的ITable对象测试,这是不对的)。在&#34; Main&#34;插件导入的主要应用程序等(工作正常,并未在上面的代码中显示)然后方法&#34;工作&#34;从插件中调用。 我简化的主要问题是:如何在插件中使用主应用程序的表对象?

0 个答案:

没有答案