j'ai quelque chose comme ce qui suit:IntelliSense « Mettre en œuvre l'interface par domaine privé », ajoute casting inutile
public interface A {
int Foo();
}
public class B : A {
public int Foo() { return 5; }
}
public class C : A {
private B bar;
}
Ce ne compilera pas, et Visual Studio met une ligne rouge sous C
; c'est prévu. L'une des solutions suggérées est Implement interface through 'bar'
. Lorsque vous cliquez sur ce, Visual Studio remplit C
comme ceci:
public class C : A {
private B bar;
public int Foo() { return ((A) bar).Foo() }
}
Ce casting est tout à fait inutile. Je pourrais l'enlever manuellement, mais dans mon code actuel, A
a des douzaines de méthodes et change constamment; ce serait bien si chaque fois que cela changeait, je pourrais mettre à jour C
en un clic sans les moulages inutiles. Dans ma situation, il serait mieux si IntelliSense rempli comme ceci:
public class C : A {
private B bar;
public int Foo { return bar.Foo(); }
}
Est-il possible de dire Visual Studio pour faire à la place?
Vous savez le casting est inutile, mais le compilateur ne peut pas garantir. Que faire si B a été implémenté avec une interface explicite comme 'public class B: A {public int Foo() {return -1;} int A.Foo() {return 5; }} ', ne pas avoir le cast à' A' va amener 'C' à retourner' -1' au lieu de '5'. –