Ряд ответов сказать, что вы не можете. Они неверны. Существует множество способов сделать это без использования оператора трансляции.
Техника № 1: Используйте оператор «как» вместо оператора литья.
void AnotherMethod()
{
(this as IAInterface).AInterfaceMethod(); // no cast here
}
Техника № 2: использовать неявное преобразование через локальную переменную.
void AnotherMethod()
{
IAInterface ia = this;
ia.AInterfaceMethod(); // no cast here either
}
Техника # 3: написать метод расширения:
static class Extensions
{
public static void DoIt(this IAInterface ia)
{
ia.AInterfaceMethod(); // no cast here!
}
}
...
void AnotherMethod()
{
this.DoIt(); // no cast here either!
}
Техника # 4: Внедрить помощника:
private IAInterface AsIA() { return this; }
void AnotherMethod()
{
this.AsIA().IAInterfaceMethod(); // no casts here!
}
В чем проблема с литой? – adrianm
Я просто нахмурился, когда обнаружил эту особенность языка. Это очень полезно при реализации некоторых интерфейсов, таких как ICloneable. –
Почему бы не сделать это наоборот? Переместите код из метода явного интерфейса в «обычный» метод. Затем просто позвольте всем методам (включая метод явного интерфейса) вызвать этот метод. – adrianm