I took a different approach, the question "what if ...". And this is my conclusion ( from my blog ):
1st: this is an IApp interface that defines the constructor "ctor (int)".
2nd: The MyApp class is defined and implements IApp.
==> MyApp class now has a constructor "ctor (int)" from IApp
3rd: this is the second ICoolApp interface that defines the constructor "ctor (string)"
4th: Class MyApp implements ICoolApp. ==> The MyApp class now has two constructors "ctor (int)" and "ctor (string)". So far so good.
Even if there were constructors with the same signature, an explicit implementation can define two different ways to create the MyApp class (since it already works with methods).
5th: A new instance of MyApp ist is created, calling "new MyClass (int)". This new instance is IApp and ICoolApp, as it implements both interfaces. No problem, right?
==> Wrong! The MyApp class has two constructors, but the instance was created by calling the IApp constructor. The constructor "ctor (string)" was not called to execute the method of creating ICoolApp objects.
As a conclusion, the MyApp instance is both IApp and ICoolApp, but the instantiation performed only one contract - the IApp contract. And because of the different signatures, it is not possible to simultaneously execute both contracts when creating an instance, although MyApp claims to comply / implement both contracts.
source share