如果我有
public class AImplementation:IAInterface
{
void IAInterface.AInterfaceMethod()
{
}
void AnotherMethod()
{
((IAInterface)this).AInterfaceMethod();
}
}
如何在不进行显式转换的情况下从
AInterfaceMethod()
调用AnotherMethod()
? 最佳答案
许多答案表明您不能。他们是不正确的。有许多不使用强制转换运算符的方法。
技术#1:使用“as”运算符代替强制转换运算符。
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 => this;
void AnotherMethod()
{
this.AsIA.IAInterfaceMethod(); // no casts here!
}