Je sais que cela doit être une question ancienne, fatigué, mais je ne peux pas sembler trouver quelque chose à travers mon ami fidèle (alias Google). J'ai une application .net 3.5 C# winforms, qui présente un utilisateur avec un formulaire de connexion au démarrage de l'application. Après une connexion réussie, je veux courir vers la base de données, récupérer des données spécifiques à l'utilisateur et les conserver (dans les propriétés) dans une classe appelée AppCurrentUser.cs, qui peut être accessible à travers toutes les classes de l'assemblage - le but ici étant que je peux remplir certaines propriétés avec une lecture de données unique, au lieu de faire un appel à la DB chaque fois que je dois. Dans une application Web, j'utilise généralement des variables de session, et je sais que le concept de cela n'existe pas dans WinForms.Winforms: propriétés de classe d'accès à travers l'application
La structure de classe ressemble à ce qui suit:
public class AppCurrentUser {
public AppCurrentUser() { }
public Guid UserName { get; set; }
public List<string> Roles { get; set; }
public string Firstname { get; set; }
public string Lastname { get; set; }
}
Maintenant, j'ai quelques options que j'ai besoin des conseils d'experts sur:
être une classe « stupide », je devrais faire les propriétés non static, instanciez la classe puis définissez les propriétés ... mais je ne pourrai accéder à cette instance qu'à partir de la classe dans laquelle elle a été créée, n'est-ce pas?
Logiquement, je crois que ces propriétés devraient être statiques que je ne vais utiliser l'ensemble de l'application classe une fois (et pas créer de nouvelles instances de celui-ci), et ses valeurs de propriété seront « remis à zéro » sur application à proximité. (Si j'en crée une instance, je peux en disposer à la fermeture de l'application)
Comment structurer ma classe et comment accéder à ses propriétés dans toutes les classes de mon assemblage? J'apprécierais vraiment vos conseils honnêtes et précieux sur ceci!
Merci!
Hi! Merci pour la réponse! Non, mon BL est dans une classe séparée et appelé de l'interface utilisateur. Aussi, suis-je valide avec mon argument statique ou non statique? – Shalan
en train de lire sur StructureMap maintenant – Shalan
Je dirais que DI est exagéré ici. Shalan a l'air d'être un débutant et l'injection de dépendance devrait être évitée jusqu'à ce que des concepts plus basiques comme Singleton Pattern - comme vous l'avez suggéré - soient mieux compris. – xanadont