これはちょっとおかしな質問です。それぞれに関連付けられた特定の機能を持つ一連のオブジェクト (設計時に既知) を作成したいと考えています。「デリゲート」を含むことができるオブジェクトのプロパティを指定することで、これを行うことができます。
public class StateTransition {
Func<bool> Condition { get; set; }
Action ActionToTake { get; set; }
Func<bool> VerifyActionWorked { get; set; }
}
StateTransition foo = new StateTransition {
Condition = () => {//...}
// etc
};
または、抽象クラスを使用して、作成するオブジェクトごとにこれを実装することもできます。
public abstract class StateTransition {
public abstract bool Condition();
public abstract void ActionToTake();
public abstract bool VerifyActionWorked();
}
class Foo : StateTransition {
public override bool Condition() {//...}
// etc
}
Foo f = new Foo();
これら 2 つの方法の実際の結果 (設計時と実行時の作成) はまったく異なることを認識しています。
アプリケーションに適した方法を選択するにはどうすればよいですか?