Ich bin neu in C#. Ich habe eine Klasse mit einigen Methoden, die das Solver-Objekt verwenden. Aber für jede Methode muss ich erneut eine Instanz des Solver-Objekts erstellen, um es zu verwenden. Kann mir jemand sagen, wie man dies vermeiden kann, indem man Schnittstellen benutzt? Eine Schnittstelle zu machen ist kein Problem, aber wie man es benutzt, sobald es gemacht worden ist ??So erstellen Sie eine Schnittstelle für Solver-Objekt und verwenden Sie es (Z3-Solver)
ZB: Das ist meine Schnittstelle, die eine Solver
public interface ISolver
{
public void Solve(Solver s);
}
Dieses enthält eine Methode, die ISolver Schnittstelle implementiert
public void Solve(Solver s)
{
Context ctx = new Context();
ctx.MkSolver();
}
Ich möchte diese (Anmerkung nach innen einige Methoden verwenden: I haben nur eine einzige Klasse, die verschiedene Methoden enthält) Eine der folgenden Methoden ist:
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 ");
}
und das andere ist:
public bool isContradiction(Expression expr)
{
BoolExpr boolVal = dispatch(expr);
Solver s = ctx.MkSolver();
s.Assert(boolVal);
Status result = s.Check();
return result == Status.UNSATISFIABLE;
}
Wie Solver s = ctx.MkSolver mehr zu verwenden(); in jeder Methode mit dieser Schnittstelle. Jede Hilfe wäre willkommen. Vielen Dank.
Ich denke, dieser Ansatz in eine falsche Richtung geht. Warum deklarierst du 's' nicht als Membervariable in deiner Klasse? Was ist "CTX"? –
@ RenéVogt ctx ist nichts anderes als ein Kontext, den wir für die Interaktion des Z3-Solver verwenden – user5440565