8
votes

Est-il possible d'accéder à une variable d'instance via une méthode statique?

en C #, est-il possible d'accéder à une variable d'instance via une méthode statique dans différentes classes sans utiliser de paramètre passant?

Dans notre projet, j'ai une catégorie de la catégorie d'accès aux données qui a beaucoup de méthodes statiques. Dans ces méthodes, la valeur du délai d'attente SQLCOMMAND a été codée dur. Dans une autre classe ( DAC ) dans notre cadre, il existe de nombreuses méthodes d'instance qui appellent ces méthodes statiques.

Je ne veux pas coder trop d'utiliser le passage du paramètre. Avez-vous une autre solution plus facile que le passage du paramètre?


1 commentaires

Une méthode statique n'est pas associée à aucune instance, alors comment vous attendez-vous à ce que cela connaisse quelle instance accéder à un membre de?


5 Réponses :


6
votes

Bien sûr, vous pouvez passer une instance comme paramètre sur la méthode. Comme: xxx

mais il ne serait pas possible d'obtenir des variables d'instance autrement.


0 commentaires

6
votes

Une méthode statique n'a aucune instance pour travailler avec, donc non. Ce n'est pas possible sans le passage du paramètre.

Une autre option pour que vous puissiez utiliser une instance statique de la classe (l'exemple de Mark affiche cette méthode au travail) Bien que, de votre exemple, je ne suis pas sûr que cela résoudrait votre problème.

Personnellement, je pense que le passage du paramètre va être la meilleure option. Je ne suis toujours pas sûr de savoir pourquoi tu veux t'en écarter.


1 commentaires

La modification se résume à "Je ne veux pas", ce qui n'est pas une bonne raison technique. L'alternative est vraiment vraiment mauvaise, sinon impossible.



13
votes

Oui, il est possible d'accéder à une variable d'instance à partir d'une méthode statique sans utiliser de paramètre, mais seulement si vous pouvez y accéder via quelque chose qui est déclaré statique. Exemple: xxx


1 commentaires

1
votes

Non, vous ne pouvez pas.

Si vous souhaitez accéder à une variable d'instance, votre méthode par définition ne doit pas être statique.


2 commentaires

Qu'en est-il d'accéder aux propriétés d'instance des singletons?


@Richard: Avec un singleton, vous avez une instance, et les méthodes ne seraient pas statiques dans ce cas. Seule la méthode pour obtenir l'instance Singleton est statique.



2
votes

Oui, cela peut, tant qu'il a une instance d'objet dans la portée. Singletons par exemple ou des objets créés dans la méthode elle-même ..

Prenons par exemple un scénario commun: P>

public static string UserName
{
   return System.Web.HttpContext.Current.User.Identity.Name;
}


0 commentaires