De retour dynamique de l'objet
J'ai une simple couche de données de routine qui effectue un mot de passe de mise à jour, l'utilisateur passe à la suivante:
- Mot De Passe Actuel, Le Nouveau Mot De Passe, Confirmer Le Nouveau Mot De Passe.
Dans ma couche de données (proc) vérifie un couple de choses comme:
- Est le mot de passe correct?
- Est le nouveau mot de passe et confirmer le mot de passe correct?
- A le nouveau mot de passe attribué dans le passé?
Et ainsi de suite...
Maintenant, je sais que je peux tout simplement créer une classe et a renvoyé un couple booléens:
public class UpdatePasswordResponse{
public bool CurrentPasswordCorrect {get;set;}
....(and so on)
}
Mais est-il une manière que je peux retour dynamique de cette information pour le biz de la couche à propriétés au lieu de créer une nouvelle classe à chaque fois (pour chaque couche de données de routine)? Je crois me souvenir en pensant que c'était possible. Je suis assez sûr que je l'ai lu quelque part, mais ne me souviens pas de la syntaxe, quelqu'un peut-il m'aider?
Êtes-vous bien vous avez besoin d'utiliser la dynamique de cette fonctionnalité? Classe Wrapper et le bien-conception de l'application serait beaucoup plus rapide.
Sauf si vous avez une bonne raison de ne pas le faire, je voudrais éviter de créer des objets dynamiques de retour. Vivement les objets sont de bonnes choses. Assurez-vous juste que vous êtes en passant via une interface à la pratique de couplage lâche de couches.
Merci à vous tous pour la réponse rapide. J'aime l'idée d'utiliser un Tuple pour renvoyer les données.
OriginalL'auteur TheWebGuy | 2012-03-01
Vous devez vous connecter pour publier un commentaire.
Vous pouvez le faire dans .NET 4 avec l'utilisation de la
dynamique
mot-clé.La classe que vous aurez envie de revenir serait un ExpandoObject.
Fondamentalement, suivez ce modèle:
Un n-uplet serait trop de travail. Je suppose qu'il voulait arbitrairement le nom de ses propriétés.
Comme Mattias points, une simple classe anonyme marcherait aussi bien, mais il serait également "gravé dans la pierre" en termes de propriétés sur l'objet.
J'oublie toujours de Tuples...bien que j'ai rarement provoquer le retour d'un objet anonyme.
Lorsque vous essayez ce code, j'obtiens l'erreur
'System.Dynamic.ExpandoObject' does not contain a definition for 'DynamicProperty1' ...
La ligne:var obj = new ExpandoObject();
doit être modifié pourdynamic obj = new ExpandoObject();
et puis il fonctionne comme prévuOriginalL'auteur Randolpho
Si vous voulez juste créer dynamiquement une classe que vous écrivez:
anonymous
exemple? pas undynamic
?J'ai essayé cela mais je ne suis pas en mesure d'accéder à des Propriétés en appelant MyMethod. Comment puis-je y avoir accès?
var expResult = new MyMethod(); string usrName = expResult.GetType().GetProperty("Nom D'Utilisateur").GetValue(expResult);
OriginalL'auteur Mattias Åslund