我是C#的新手,遇到了问题。我想做以下事情:
我想要从静态方法访问DataSet
state
。但是,使用(SpecExplorer)的插件不允许我将DataSet
的实例声明为static
。例如:
// This gives a long error from SpecExplorer
static State state = new State();
// This gives no error however I am not able to use `state` in any of the static functions.
State state = new State();
我试图访问state
的函数必须看起来像这样,因为SpecExplorer需要这样做:
[Rule]
static void create(int param) {
// ACCESS STATE
}
我也尝试了以下建议的解决方案:
Accessing non static variables in static methods 但是在尝试时会得到完全相同的错误。
我得到的错误说明如下:
Syste.Data.DataSet.set_Namespace(System.String)中的unavaliable成员: System.Data.Common.ADP.IsEmpty(System.String)(可能是因为类型替换不完整)。
我的问题是:
允许我在静态方法中访问state
的解决方法是什么?
答案 0 :(得分:0)
创建static instance
持有人类DataSet
:
class classA {
//...
public DataSet state;
//...
}
你可以:
static ClassA a=new ClassA():
[Rule]
static void create(int param) {
//...
a.state=//do something with it;
//...
}
答案 1 :(得分:0)
最好的方法是传递state
作为附加参数:
[Rule]
static void create(State state, int param) {
// ACCESS STATE
}
从可以访问实例成员的方法中调用它。
State s = new State();
State.create(s, 0);
或者来自State
实例:
create(this, 0);
答案 2 :(得分:0)
看起来问题在于DataSet
要求在探索期间调用非托管函数。建议仅在表示状态时使用Microsoft.Modeling
中的类型。