First of all, the methods are not the same; they only have the same name and signature. Method identity is made of the combination of assembly/type/method, not just name. If an assembly is signed, it even makes each method world-unique, even if other methods have the same name/signature.
You simply need to write
explicit interface implementations instead of
implicit. Generally, the explicit provides many benefits over the implicit.
Here is how:
interface IFirst { void Method(); }
interface ISecond { void Method(); }
class SomeClass: Form, IFirst, ISecond {
void IFirst.Method() { }
void ISecond.Method() { }
}
SomeClass classInstance = new SomeClass();
IFirst classInstanceAsIFirst = classInstance;
ISecond classInstanceAsISecond = classInstance;
I hope this is all clear.
See also this old but still fully valid MSDN article:
http://msdn.microsoft.com/en-us/library/aa288461%28v=vs.71%29.aspx[
^].
Most recent chapters in MSDN manual:
http://msdn.microsoft.com/en-us/library/ms173157.aspx[
^],
http://msdn.microsoft.com/en-us/library/tx1s9z1w.aspx[
^].
—SA