It is called an explicit implementation of interfaces. This means that this particular CanExecute implementation will not be visible (and will not work) IF the object is not passed as ICommand.
This can be useful if you allow the class to provide different implementations for different interfaces, where method names overlap.
public interface InterfaceOne { void SomeMethod(); } public interface InterfaceTwo { void SomeMethod(); } public class Impl : InterfaceOne, InterfaceTwo { public void InterfaceOne.SomeMethod() {Console.WriteLine("One");} public void InterfaceTwo.SomeMethod() {Console.WriteLine("Two");} }
I personally hate this syntax. Take the OracleParameter example , which provides only an explicit implementation of ICloneable .
If you have a reference to OracleParameter, the Clone () method will not appear in intellisense and will not display when you go to the definition. However, is there a possibility of ((ICloneable)parameter).Clone() . To even know that this is possible, you can do it because you are almost stuck on google blogs.
source share