Lorsque je conçois les modèles pour un domaine, ils finissent presque toujours par avoir une fonctionnalité .IsSomething
sur eux. Pour la validation des règles métier, IsValid
pour IsValid
pour la validation des règles métier, voire IsFraudulent
pour un projet en cours (plus de validation des règles métier), etc. Chaque fois que je les vois implémentés par d'autres, ils sont presque toujours utilisés comme méthodes. Mais je me demande s'il y a une raison particulière à cela.Model.Is ___ - Devrait-il s'agir d'une propriété ou d'une méthode?
J'ai tendance à voir les propriétés comme décrivant un objet et des méthodes comme effectuant une sorte d'action. Ceux-ci n'effectuent pas vraiment une action. Ils impliquent du code, car ils sont déterminés dynamiquement lorsqu'ils sont appelés, et ils sont clairement en lecture seule, mais pour moi, ils correspondent toujours à des propriétés plutôt qu'à des méthodes.
Il pourrait potentiellement y avoir un problème de sérialisation avec les propriétés, je suppose. Bien qu'un modèle de domaine riche ait tendance à ne pas bien sérialiser de toute façon étant donné qu'il contient de la logique et des fonctionnalités, chaque fois que je dois déplacer quelque chose à travers une limite de service, je l'aplatisse généralement dans une structure DTO définie.
Mais je me demande si quelqu'un d'autre a un aperçu sur le sujet? Y a-t-il une bonne raison de les mettre en œuvre en tant que méthodes plutôt qu'en tant que propriétés?
(qu'accessoirement, bien que an answer has already been given, les propriétés d'extension serait vraiment aider à la cohérence sur quelque chose comme ça. J'ai plusieurs IsSomething()
méthodes d'extension, généralement sur System.String
, pour la mise en œuvre logique spécifique au domaine. Mais même si les propriétés sont la manière aller, je veux rester avec des méthodes seulement pour la compatibilité avec les extensions)
Ou vous pouvez croiser les doigts et espérer des propriétés d'extension dans C# 5 :) – SWeko