我创建了一个插件,我试图在一个类上使用它,问题是我在这个类中尝试使用的方法是一个静态方法。
插件实现的结构如下:
问题出在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
声明为静态,原因如前所述?
答案 0 :(得分:0)
有没有办法在TestMethod中使用TestPlugin 将TestPlugin声明为静态,原因如前所述?
快速回答是否定的。
基本上你有以下选择:
TestPlugin
成为静态。TestMethod
不是静态的。TestMethod
将TestClass
对象作为参数引用。IList<IEnumerable<ITestPlugin>>
的静态集合,并在get
的{{1}} / set
方法中添加/删除该新集合中的类。您选择的四个中的哪一个取决于您想要达到的目标。