J'ai un certain nombre de classes qui représente les appels de transactions commerciales: l'exécution des procédures stockées appropriées.Comment éviter l'erreur 'call is ambiguous ...' lors de l'écriture de méthodes statiques et non statiques en C#?
Maintenant, les regards comme celui-ci:
public static class Request
{
public static void Approve(..) {
using(connection) {
command.Text = "EXEC [Approve] ,,"]
command.ExecuteNonQuery();
}
}
}
Et je veux les rendre plus thread-safe:
public class Request {
public static void Approve(..) {
new Request().Approve(..);
}
internal void Approve(..) {
using(connection) {
command.Text = "EXEC [Approve] ,,"]
command.ExecuteNonQuery();
}
}
}
Mais obtenir message d'erreur suivant:
L'appel est ambigu entre les méthodes ou propriétés suivantes: : 'MyNamespace.Request.Approve (..)' et 'MyNamespace.Request.Approve (..)'
Comment puis-je forcer, marque que j'appelle non-statique, méthode d'instance de statique? Ou je ne peux pas faire cela sans renommer l'une des méthodes? Ou déplacement d'une méthode statique vers une autre classe, etc.
Vous pourriez être intéressé par certaines des décisions de conception impliquant la désambiguation des méthodes statiques à partir des méthodes d'instance en C#. Les règles semblent un peu étranges, mais en fait, elles sont soigneusement conçues. Voici un article que j'ai écrit récemment sur le sujet: http://blogs.msdn.com/ericlippert/archive/2009/07/06/color-color.aspx –
@Eric Lippert Bonjour, Eric. Merci beaucoup pour le lien! J'ai beaucoup de nouvelles informations. btw Je lis votre blog (en russe par Gaidar) – abatishchev