cevapları bir dizi yapamazsın demek. Yanlışlar. Bunu, cast operatörünü kullanmadan yapmanın birçok yolu vardır.
Teknik # 1: "İşleç" yerine "as" operatörünü kullanın.
void AnotherMethod()
{
(this as IAInterface).AInterfaceMethod(); // no cast here
}
Teknik # 2: yerel bir değişken aracılığıyla örtülü bir dönüşüm kullanın.
void AnotherMethod()
{
IAInterface ia = this;
ia.AInterfaceMethod(); // no cast here either
}
Teknik # 3:
static class Extensions
{
public static void DoIt(this IAInterface ia)
{
ia.AInterfaceMethod(); // no cast here!
}
}
...
void AnotherMethod()
{
this.DoIt(); // no cast here either!
}
Teknik # 4: bir yardımcı tanıtmak:
private IAInterface AsIA() { return this; }
void AnotherMethod()
{
this.AsIA().IAInterfaceMethod(); // no casts here!
}
Oyuncularda sorun nedir? – adrianm
Bu dil özelliğini keşfettiğimde kaşlarını çattım. Yine de ICONeable gibi bazı arayüzleri uygularken çok kullanışlıdır. –
Neden o zaman başka şekilde yapmıyorsunuz? Kodu, açık arabirim yönteminden "normal" bir yönteme taşıyın. Sonra sadece tüm yöntemler (açık arabirim yöntemi dahil) bu yöntemi çağırsın. – adrianm