c# – 如何在内部调用显式接口实现方法,而不需要显式转换?

如果我有

public class AImplementation:IAInterface
{
   void IAInterface.AInterfaceMethod()
   {
   }

   void AnotherMethod()
   {
      ((IAInterface)this).AInterfaceMethod();
   }
}

如何从AnotherMethod()中调用AInterfaceMethod()而不显式转换?

最佳答案
一些答案说你不能。他们不正确在不使用演员的情况下,有很多方法可以做到这一点。

技术#1:使用“as”运算符代替cast运算符。

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!
}

转载注明原文:c# – 如何在内部调用显式接口实现方法,而不需要显式转换? - 代码日志