8
votes

Valider les propriétés en C #

suggère que j'ai reçu une interface et hériter de la classe, xxx

puis comment valider les chaînes dans la classe de collaborateurs? Est-il possible de mettre en œuvre des propriétés intérieures?


0 commentaires

9 Réponses :


9
votes

Oui, mais n'utilisez pas les propriétés automatiques. Vous devrez mettre en œuvre manuellement les propriétés avec un champ de support: xxx


0 commentaires

0
votes

oui. Vous pouvez créer un champ de support privé pour la propriété, comme celui-ci:

private String _firstName;

public String FirstName
{
     get
     {
          return _firstName;
     }
     set
     {
          //Check value for correctness here:
          _firstName = value;
     }
}


0 commentaires

0
votes
private DateTime recruitmentDate;    
public DateTime RecruitmentDate
{
    get { return recruitmentDate; }
    set
    {
        validate(value);
        recruitmentDate = value;
    }
}

0 commentaires

2
votes

Autant que je sache, si vous utilisez la syntaxe de propriétés automatiques, vous perdez la possibilité d'accéder aux champs de support. Selon la documentation (http://msdn.microsoft.com/en-us/library/bb384054.aspx):

en C # 3.0 et ultérieure, mise en œuvre automatique Propriétés faire de la propriété-déclaration plus concis quand aucune logique supplémentaire est requis dans les accesseurs de propriété. Ils permettent également de créer le code client de créer objets. Quand vous déclarez une propriété Comme indiqué dans l'exemple suivant, le Compilateur crée un privé et anonyme champ de support qui ne peut être que accessible à travers la propriété et mettre des accesseurs.

Les attributs sont autorisés sur propriétés appliquées automatiquement mais évidemment pas sur les champs de support depuis que ce ne sont pas accessibles de votre code source. Si vous devez utiliser un attribut sur le champ de support d'un propriété, crée juste un régulier Propriété.

Votre seule solution est de créer des propriétés régulières.


0 commentaires

0
votes

Si vous voulez dire, pouvez-vous effectuer une logique personnalisée lors de l'obtention / jeu d'une propriété en C #, la réponse est oui.

Votre utilisation des propriétés appliquées dans lesquelles le magasin de support et la logique sont défaillants pour vous.

Il vous suffit de le fournir vous-même comme xxx

maintenant, vous pouvez exécuter un code de validation personnalisé dans vos blocs d'obtention et définir.


0 commentaires

6
votes

quelque chose comme ça ... xxx

Fondamentalement, ce que vous utilisez pour les propriétés sont la version Syntaxtic Sugar. Lors de la compilation, ils créent une variable de membre privé et font appel à la propriété pour utiliser cette variable, car je fais que je fais manuellement ici. La raison exacte de ceci est donc que si vous souhaitez ajouter une logique, vous pouvez le convertir en un manuel que j'ai comme si j'ai ici sans casser la mise en œuvre de l'interface.


0 commentaires


3
votes

doit également mentionner des cadres de validation si vous obtenez un peu plus sophistiqué. Ils peuvent rendre les règles de validation beaucoup plus faciles à gérer et seront également des erreurs de surface à votre assurance-chômage, tout en conservant les règles liées à vos modèles afin que vous n'ayez pas à avoir un code de validation de la batterie répétitive. Selon votre version-cadre, une option est Datanotations .


0 commentaires

0
votes

Alternativement, vous ne pouvez pas utiliser de types de valeur pour vos champs. Par exemple, vous pouvez créer une classe "Prénom" avec la mise en œuvre suivante:

public FirstName MyFirstName;
var x = MyFirstName.Value;


0 commentaires