私はある種のIExecutableインターフェイスのデザインを作ろうとしています。詳細はわかりませんが、基本クラスから実行する必要があるアクションがいくつかあります。彼らは異なるパラメータを取るかもしれません(大したことはありません)、値を返すかもしれません。カプセル化アクション<T>およびFunc <T>?
これまでのところ、これは私のデザインです:
public abstract class ActionBase
{
// ... snip ...
}
public abstract class ActionWithResultBase<T>: ActionBase
{
public abstract T Execute();
}
public abstract class ActionWithoutResultBase: ActionBase
{
public abstract void Execute();
}
これまでのところ、私の具体的な行動のそれぞれは、ActionWithResultBaseまたはActionWithoutResultの塩基のいずれかからの子にする必要がありますが、私は本当に好きではありません。 Executeの定義をActionBaseに移すことができれば、具体的なクラスが値を返すかどうかを考えれば、私は目標を達成することができます。
誰かが、これはFuncとActionを使って行うことができますが、私は完全に同意していますが、呼び出し元がアクションが実行されているかどうかを知るために、値を返すかどうかを指定します。
概要:あなたは、メソッド、右の戻り値を無視することができることを知っている
// Action1.Execute() returns something.
var a = new Action1();
var result = a.Execute();
// Action2.Execute() returns nothing.
var b = new Action2();
b.Execute();
私の目標は、抽象的なExecute in ActionBaseを持ち、ActionWithResultBaseとActionWithoutResultBaseを作成しないことです。 – Alpha