我正在尝试为某种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();
}
Run Code Online (Sandbox Code Playgroud)
到目前为止,我的每个具体动作都需要来自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();
Run Code Online (Sandbox Code Playgroud)