¿Por qué el compilador de C # inserta una implementación de interfaz explícita?

Me encontré con un extraño caso de C # edge y estoy buscando una buena solución.

Hay una clase que no controlo que se ve así:

namespace OtherCompany
{
    public class ClassIDoNotControl
    {
        public void SomeMethod(string argument)
        {
            Console.WriteLine((new StackFrame(1).GetMethod().Name));
        }
    }
}

Me gustaría heredar de esta clase en una clase Ihacer controlar. Además, me gustaría especificar una interfaz en él:

interface IInterfaceIDoControl
{
    void SomeMethod(string argument);
}

class ClassIDoControl : OtherCompany.ClassIDoNotControl, IInterfaceIDoControl
{
}

Si todos estos archivos están en el mismo ensamblaje, todo funciona muy bien:

namespace MyCompany
{
    class Program
    {
        static void Main(string[] args)
        {
            IInterfaceIDoControl i = new ClassIDoControl();
            i.SomeMethod("Hello World!"); // Prints "Main"
        }
    }
 }

Pero, si muevo "ClassIDoNotControl" a otro ensamblado, no obtengo lo que esperaba. En cambio, veo "MyCompany.IInterfaceIDoControl.SomeMethod" para la salida que implica un marco de pila adicional.

La razón es que debajo de las cubiertas, el compilador de C # está cambiando "ClassIDoControl" para que se vea así:

class ClassIDoControl : OtherCompany.ClassIDoNotControl, IInterfaceIDoControl
{
    void IInterfaceIDoControl.SomeMethod(string argument)
    {
        base.SomeMethod(argument);
    }
}

¿Hay alguna manera de evitar esta capa adicional de indirección generada por el compilador con interfaces implementadas explícitamente?

Respuestas a la pregunta(1)

Su respuesta a la pregunta