I have this interface:
public interface INameScope
{
void Register(string name, object scopedElement);
object Find(string name);
void Unregister(string name);
}
But I want my implementation have different names for the methods. My implementation already has a Register method that has another meaning.
Isn't there a method to make implemented methods have names like "RegisterName", "FindName" or "UnregisterName" instead of having to use the very same names?
Not quite, but you can use explicit interface implementation:
public class SomeScope : INameScope
{
void INameScope.Register(string name, object scopedElement)
{
RegisterName(name, scopedElement);
}
public void Register(...)
{
// Does something different
}
public void RegisterName(...)
{
// ...
}
...
}
I would be very wary of doing this if your existing Register
method has similar parameters though - while the compiler will be happy with this, you should ask yourself how clear it's going to be to anyone reading your code:
SomeScope x = new SomeScope(...);
INameScope y = x;
x.Register(...); // Does one thing
y.Register(...); // Does something entirely different
See more on this question at Stackoverflow