dire que j'ai une interface et je voulais mettre en œuvre cette interface, mais pour une classe, la méthode est vide. P> devrais-je vivre avec l'avertissement produit? p> ou dois-je renvoyer une tâche manneule? p> ou y a-t-il une autre option? p> aussi je veux mettre en œuvre cette méthode comme méthode d'interface explicite. Cela fera-t-il une différence? P> p>
3 Réponses :
Cela dépend seulement de la manière dont vous décidez que ce cadre doit gérer de tels cas. p>
Vous avez, imo, plusieurs options: p>
Soulevez une exception (cassera immédiatement l'exécution, et vous devez manipuler em> il est d'une manière ou d'une autre dans un endroit dans une chaîne d'exécution). p> li>
retour Renvoie certains valeur par défaut code> (qui peut être une solution proposée par vous: juste une tâche vide qui ne fait rien. Mauvais à ce sujet est que je appelle la fonction attendre EM> Cela fait quelque chose, cela ne m'indique pas de quoi que ce soit, mais ne fais rien non plus. Imo, c'est mauvais design. P> li>
non valide-value code>, qui intercepté par l'appelant afin que l'appelant "sait" que quelque chose ne soit pas ok em>. p> li>
ul>
Méthodes qui renvoient Je recommanderais quelque chose comme ceci: p> Task code> ne doivent pas nécessairement être
async code>.
Task IFoo.SomeMethodAsync()
{
return Task.FromResult(true);
}
Je l'ai couru avec une classe de base abstraite. J'ai essayé la méthode de Stephen Cleary, mais obteniez des erreurs de compilateur en C # 6.
un exemple de ma méthode de base: p> C'est ce que je devais faire dans mon dérivé Classe: P> protected override async Task OnFoo(Bar bar)
{
await Task.FromResult(true);
}
Dupliqué possible de Interfaces et méthodes asynchronisées