如何在c#中创建一个使用对象名称的方法?
本文关键字:对象 方法 一个 创建 | 更新日期: 2023-09-27 18:07:05
假设我有一个名为Enabler
的类
我创建了一个类的实例,就像我通常做的那样(在半伪c#代码中)
bool cond;
Enabler enable = new Enabler(cond);
当我调用Enabler的方法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()
?
恐怕这样做是不可能的。但是如果你可以禁用和启用你的"Enabler"类,"Enabler"可能不是正确的名称。
"Toggler"或者更冗长的名字怎么样?
编辑:@Nahum的回答也是一个很好的提示。要获得易于维护的代码,您应该同时更改imo.直接调用Activate
或Execute
方法
有两个实例
Enabler enable= new Enabler(cond);
Enabler disable = new Enabler(!cond);
enable.Activate()
disable.Activate()
我也觉得enabler是一个糟糕的类名。
你的类处理启用和禁用,从你的类名不清楚它做什么。
您应该将其命名为StatusChanger
或任何适合您的应用程序的名称。
enable
和disable
这两个方法呢?