我正在尝试为某种 IExecutable 接口进行设计。我不会详细介绍,但重点是我有几个需要从基类执行的操作。它们可能采用不同的参数(没什么大不了的),它们可能/可能不会返回值。
到目前为止,这是我的设计:
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();