Salut les gars Je suis nouveau à CC et j'ai besoin de votre suggestion. J'ai commencé avec CC dans mon dernier projet. J'ai un contrat WCF, qui devrait être mis en œuvre par des tiers. Je souhaite attribuer des contrats de code aux contrats de service. Disons que j'ai une voiture de classe (contrat de service) et c'est OperationContract ICar. ICar a une méthode GetCar() qui, comme je l'ai dit plus haut, devrait être implémentée par nos clients. Je crée une classe de contrat de code pour Icar et dans la méthode GetCar, je valide le contrat en utilisant la classe CarContractHelper. J'ai introduit une classe d'aide qui valide la classe Car de la manière suivante: Contract.Ensure(CarContractHelper.Validate(Contract.Result<Car>()))
. Est-ce une approche correcte pour résoudre le problème? Ou y a-t-il un meilleur moyen? Je valide également chaque membre de la classe Car dans ses setters, que pensez-vous de cela, est-ce nécessaire ou c'est une surcharge? Merci Et bien sûr, je vais marquer la réponse correcte et vote perdu :)Besoin d'une suggestion avec CodeContracts
MISE À JOUR
@StriplingWarrior J'introduit l'assistant de validation de voiture pour traiter le code de validation de contrat répétitif. par exemple:
Contract.Requires(!string.IsNullOrWhiteSpace(car.Id);
Contract.Requires(car.Mileage > 0);
etc. Au lieu d'écrire partout code Contract.Requires, je viens d'une classe d'aide pour chaque objet métier qui valide le contrat de l'objet métier. Et c'est ce que je veux savoir, si c'est une approche correcte ou peut-être qu'il existe un meilleur moyen? merci.
P.S. Je valide toutes les propriétés dans leurs propres setters parce que la méthode invariante ne fonctionnera pas pour moi (?), Pour autant que je sache, invariants fonctionne quand n'importe quelle méthode de la classe est appelée, et dans mon cas, wcf contrat ne avoir des méthodes. Donc, je choisis de valider à l'intérieur des propriétés setter. Est-ce une bonne approche?
Pouvez-vous fournir du code? On dirait que vous dites 'ICar.GetCar()' renvoie une valeur de type 'Car', mais dans ce cas, à quoi ressemble' Car'? Est-ce que 'Car' implémente' ICar'? – StriplingWarrior
Orthographe ... 'Kilométrage'. –
Merci Austin :-) Il est mis à jour – Davita