在c#

时间:2016-10-18 13:14:22

标签: c#

我创建了一个插件,我试图在一个类上使用它,问题是我在这个类中尝试使用的方法是一个静态方法。

插件实现的结构如下:

Plugin use struct

问题出在TestMethod类的名为TestClass的方法中。 我不能使用属性TestPlugin,因为它不是静态属性。

我尝试将其用作静态,但是当我更改它时,TestPlugin属性变为null。 出于这个原因,我试图找到一种方法将它用作普通属性,但经过大量搜索后我找不到办法。

代码如下:

TestPlugin声明:

[ImportMany]
public IEnumerable<ITestPlugin> TestPlugin{ get; private set;}

使用TestPlugin属性:

private static void TestMethod(){
    ...
    // Here Visual Studio says that :
    //An object reference is required for the nonstatic field, method, or property 'ToastPlugin'
    foreach(plugin in TestPlugin){
       //Plugin's use
    }
    ...
}

编辑:

有没有办法在TestPlugin内使用TestMethod而不将TestPlugin声明为静态,原因如前所述?

1 个答案:

答案 0 :(得分:0)

  

有没有办法在TestMethod中使用TestPlugin   将TestPlugin声明为静态,原因如前所述?

快速回答是否定的。

基本上你有以下选择:

  1. 同时使TestPlugin成为静态。
  2. TestMethod不是静态的。
  3. TestMethodTestClass对象作为参数引用。
  4. 添加IList<IEnumerable<ITestPlugin>>的静态集合,并在get的{​​{1}} / set方法中添加/删除该新集合中的类。
  5. 您选择的四个中的哪一个取决于您想要达到的目标。