【发布时间】:2013-03-23 12:29:24
【问题描述】:
假设我有一个名为Enabler的类
我像往常一样创建了一个类的实例(在半伪 C# 代码中)
bool cond;
Enabler enable = new Enabler(cond);
当我调用名为 Enable 的启动器方法时,问题就出现了,问题不大,因为它非常冗长
enable.Enable(/*some code to enable*/);
当我这样做时,真正的问题出现了:
Enabler disable = new Enabler(!cond); //reverse condition
disable.Enable(/*some code to disable*/); //this makes no sense semantically
所以我正在寻找一种方法来做这样的事情:
Enabler enable = new Enabler(cond);
Enabler disable = new Enabler(!cond);
// then simply call the method by the object name like this:
enable(/*something to enable*/); //uses the object name as the method name
disable(/*something to disable*/);
这在语义上比说disable.Enable 更有意义
有没有办法做到这一点?
就像可以创建this[] 一样,是否也可以创建this() 之类的?
【问题讨论】:
-
Enable()的参数类型是什么? -
有 2 种方法会更有意义,1 用于启用,1 用于禁用。然后通过合理的命名,您可以拥有:
BooleanTest.Enable(/*Enable Something*/);和BooleanTest.Disable(/*Disable Something*/);然后测试主机将始终拥有这两种方法,其中一种方法是逆向测试。 -
@JamesB 否,因为它应该在
cond更改时切换,就像如果开始条件为假时 if 跳过代码,如果构造函数中的条件为假,Enabler会跳过代码