我有这个界面:
public interface INameScope
{
void Register(string name, object scopedElement);
object Find(string name);
void Unregister(string name);
}
但是我希望我的实现对方法使用不同的名称。我的实现已经有一个Register方法,该方法具有另一种含义。
是否没有一种方法可以使已实现的方法具有“ RegisterName”,“ FindName”或“ UnregisterName”之类的名称,而不必使用完全相同的名称?
不完全是,但是您可以使用显式接口实现:
public class SomeScope : INameScope
{
void INameScope.Register(string name, object scopedElement)
{
RegisterName(name, scopedElement);
}
public void Register(...)
{
// Does something different
}
public void RegisterName(...)
{
// ...
}
...
}
如果您现有的Register
方法具有类似的参数,我会非常谨慎-尽管编译器对此感到满意,但您应该问自己,对任何阅读您的代码的人来说,有多清楚:
SomeScope x = new SomeScope(...);
INameScope y = x;
x.Register(...); // Does one thing
y.Register(...); // Does something entirely different
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句