C#を初めて使用しています。私は、ソルバーオブジェクトを使用するいくつかのメソッドを持つクラスを持っています。しかし、それぞれのメソッドのために私はそれを使用するソルバーオブジェクトのインスタンスを再度作成する必要があります。インターフェイスを使ってこれを避ける方法を教えてもらえますか? インターフェイスを作成するのは問題ではありませんが、インターフェイスが作成されたらどのように使用するのですか?ソルバーオブジェクトのインターフェイスを作成して使用する方法(Z3ソルバー)
例: これはこれは私がいくつかのメソッドの内部でこれを使用したい(注意ISolverインタフェース
public void Solve(Solver s)
{
Context ctx = new Context();
ctx.MkSolver();
}
を実装するメソッドであるソルバー
public interface ISolver
{
public void Solve(Solver s);
}
が含まれている私のインターフェイス、次のとおりです。I異なるメソッドを含む1つのクラスのみを持つ) メソッドの1つは、次のとおりです。
public void MyCheck(Expression expr)
{
BoolExpr boolVal = dispatch(expr);
Solver s = ctx.MkSolver();
Console.WriteLine(boolVal);
s.Assert(boolVal);
Console.WriteLine("\n ");
Console.WriteLine(s.Check());
Console.WriteLine(ReturnTrueFalse(s));
Console.WriteLine("\n ");
}
そして他方は:
public bool isContradiction(Expression expr)
{
BoolExpr boolVal = dispatch(expr);
Solver s = ctx.MkSolver();
s.Assert(boolVal);
Status result = s.Check();
return result == Status.UNSATISFIABLE;
}
ソルバーS = ctx.MkSolver()の使用を停止する方法。を、このインターフェイスを使用することによって、すべての方法で使用できます。どんな助けもありがとう。ありがとう。
私はこのアプローチは間違った方向に行くと思います。あなたのクラスのメンバ変数として 's'を宣言しないのはなぜですか? 'ctx'とは何ですか? –
@RenéVogtctxは、私たちがz3ソルバーのやりとりに使用するコンテキストに過ぎません – user5440565