Partial explicit implementation of interface in .NET
<p>We would like to do a "partial explicit implementation" of a interface in classes that are part of a class library. By partial explicit implementation I mean implementing some members of the interface implicitly and remaining members of same interface explicitly.
Please let us know of the possible concerns we need to look out for. </p>

<p>More specifically supposing we have <code>IDriver</code> interface that is defined as follows. The <code>IDriver</code> interface defines the fundamental capability of all drivers.</p>

<pre><code>interface IDriver
{
    IDriverIdentity DriverIdentity { get; }
    IDriverOperation Operation { get; }
    IDriverUtility Utility { get; }
}

public class MyDriver1 : IDriver
{
    // Implement the first and second member of IDriver implicitly
    public IDriverIdentity DriverIdentity
    {
        get
        {
            // return a IDriverIdentity object that user can use to assess Identity operations...
        }
    }
    public IDriverOperation Operation
    {
        get
        {
            // return a IDriverOperation object that user can use to access DriverOperation related properties and members..
        }
    }
    // Implement the last member of interface explicitly
    IDriverUtility IDriver.Utility
    {
        get
        {
            // return a IDriverUtility object that user can use to access fundamental utility operations that is mandated for every "Driver" object...
        }
    }
    public MyDriver1Utility Utility
    {
        get
        {
            // return MyDriver1Utility object that user can use to access utility operations available in this driver ...
        }
    }
}
</code></pre>

<p>Similarly let us suppose we have <code>MyDriver2</code>, <code>MyDriver3</code>, etc that implement the <code>DriverIdentity</code> and <code>Operation</code> implicitly and <code>Utility</code> explicitly.</p>

<p>In all <code>Driver</code> classes we would like to implement <code>DriverIdentity</code> and <code>Operation</code>  implicitly so that a user has a consistent view of <code>DriverIdentity</code> and <code>Operation</code> while using different <code>Driver</code> objects.
However, the <code>Utility</code> member we would like to implement explicitly and provide additional utility operations specific to that driver while accessed from the driver object.</p>

<p>We are looking to understand any possible side-effects/consequences of partial explicit implementation in this scenario. Please let us know you comments.</p>

<p>Thanks in advance!!</p>
