具有不同方法名称的接口实现

超级JMN

我有这个界面:

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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章