3

私たちのプロジェクトの要件についてアドバイスが必要です。私たちが達成しようとしているのは、テキストまたは XML ファイルからのメソッド呼び出しの流れを制御したいということです。

例えば:

string response = new Assembly1.Class1().DoStuff();
if (response == "OK")
{
  new Assembly1.Class2().DoStuff();
}
else if (response == "NOTOK")
{
  new Assembly2.Class1().DoStuff();
}

上記のコードを技術者以外のユーザーが変更して関数呼び出しのシーケンスを変更できる形式で表現するにはどうすればよいですか。

4

3 に答える 3

2

基本的に、あなたはあなたが達成しようとしていることを決定しなければなりません。

C#コードにはある程度の複雑さが含まれていますが、C#コードは非常に柔軟であるため、その複雑さはすべてそこにあります。

技術者以外のユーザーにどの程度の柔軟性を与えるかを決定する必要があります。C#と同じ柔軟性を提供したい場合は、C#でプログラムするだけでもかまいません。

それ以外の場合、最初のステップは、実行する構成を記述するドメイン固有言語を発明することです。ただし、その前に、説明していることをすでに実行している既存のドメイン固有言語があるかどうかを調査することをお勧めします。

ドメイン固有言語を定義した次のステップは、その言語を解析して解釈することです。これは比較的複雑で、通常、コンパイラと呼ばれる大学での1学期の長いコースの主題です。コンパイラコースを受講していない場合は、読むことができる本があります。XMLなどのマークアップ言語や標準のXML解析ライブラリを使用すると、多くの手順をスキップできる場合があります。

于 2010-12-09T05:49:52.847 に答える
0

この目的でリフレクションを使用したり、xml からオンフライでコードを生成したりできると思います。ここにはたくさんのサンプルがあります。

于 2010-12-09T05:44:38.387 に答える
0

工場設計パターンが役に立つかもしれません。ファクトリパターンを使用すると、実行時にオブジェクトを割り当て、それらのオブジェクトにプロセスの流れを決定させることができます...

WorkFlow() などのメソッドを使用して、さまざまなクラスを構築する必要があります (インターフェイスで参照されます)。メソッドは、必要に応じて他のメソッドを呼び出すことができる必要があります。

プロセスの最初に、XML ファイルを読み取り、適切なクラスのオブジェクトを作成し、そのクラスのワークフロー メソッドを呼び出すだけで、事前に定義されたシーケンスが実行されます。

于 2010-12-09T05:48:49.540 に答える