[英]Use a public attribute in a static method on c#
我创建了一个插件,我试图在一个类上使用它,问题是我试图在这个类中使用的方法是一个静态方法。
插件实现的结构是这样的:
问题出在TestClass
类的TestMethod
方法中。 我不能使用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
为静态的,理由之前说的吗?
有没有办法在TestMethod中使用TestPlugin而不将TestPlugin声明为静态,原因如前所述?
快速回答是否定的。
基本上你有以下选择:
TestPlugin
静态的。 TestMethod
不是静态的。 TestMethod
将TestClass
对象的引用作为参数。 IList<IEnumerable<ITestPlugin>>
,并在get
/ set
的方法TestPlugin
添加/新集合中删除的类。 你选择的那四个中的哪一个取决于你想要达到的目标。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.