J'ai une méthode avec le paramètre d'objet afin qu'elle puisse être utilisée différemment par différentes méthodes d'appel. À l'intérieur de la méthode, je dois vérifier si le premier paramètre de l'objet est de la date ou non, sinon défini la date d'aujourd'hui.
CreateNew(fileData,new {portDate=portDate});
CreateNew(fileData,new {portDate=portDate,countries=countries});
3 Réponses :
Vous pouvez utiliser si je suis d'accord avec le commentaire que vous semblez utiliser le commentaire que vous semblez utiliser classes anonymes de mauvaise manière. Si vous savez ce que vous recevez, créez simplement une classe réelle qui aura dynamique code> au lieu de objet code>, puis vérifier DateTime portate code> afin que vous sachiez bien. P> p>
Vous pouvez voir toutes les propriétés de l'objet et vérifier si l'une des thoses est DateTime fonctionnant également pour les paramètres dynamiques p> p>
Votre question indique que si Si c'est le cas, une meilleure signature peut être la suivante: p> qui donne clairement à l'appelant que de sorte que s'il n'a pas de valeur, il est remplacé par S'il existe différentes façons de l'appeler, vous pouvez fournir des surcharges différentes en fonction de la façon dont il convient d'être appelé. p> Vous pouvez également ajouter: p> S'il est possible que l'un soit possible, mais ils ne devraient pas tous les deux être nuls, vous pouvez créer des signatures reflétantes Qu'ils présentent chacun d'eux appeler une méthode code> code> privée qui gère les NULLS. De cette façon, vous communiquez plus clairement les attentes. P> Si quelque chose d'autre doit appeler une méthode similaire, mais le deuxième paramètre peut être quelque chose de totalement différent (pas une date), il est préférable de créer une méthode différente. Si le type du paramètre est d'autresparams code> n'est pas un DateTime code> Vous utiliserez datetime.now code>. Cela suggère que si d'autresparams code> n'est pas un DateTime code>, il n'est pas utilisé. portate code> est censé être un DateTime code>, mais c'est facultatif. Ensuite, vous pouvez faire cela: p> datetime.now code>. P> objet code> et une possibilité est que cela pourrait être un datetime code> et il y a au moins un autre type correct, il n'y a aucun moyen pour l'appelant de savoir ce qu'ils devraient passer. Par exemple, ils pourraient appeler: P> CreateNew(someFileModel, new List<string>());
Je sens que vous abusez des types anonymes de C #. Pourquoi ne pas utiliser un paramètre tuple fortement typé à la place?
Ma recommandation ne dispose pas de méthodes écrites pour être utilisées différemment de différentes méthodes d'appel. Si
AutresParams CODE> peut être des choses différentes, comment quelqu'un saurait-il ce que cela pourrait être? Si vous postez un exemple de ce que certaines des différentes variations sont sur https://softwareEngineering.stackexchange.com/ puis il pourrait y avoir des suggestions sur lesquelles les pièces peuvent être réutilisées et combinées et qui pour rester complètement séparées. Parce que la combinaison pour réduire la duplication est bonne, tout simplement pas de manière à faire obstacle aux intentions.@Dai Ma compréhension pourrait être complètement tort, mais puis-je utiliser Tuple lorsque je ne suis pas toujours sûr du nombre de paramètres? Parce que dans le cas 1, il y a 1, dans le cas 2, il y a 2 et je pourrais avoir un cas où il y en a 3.
Vous ne pouvez pas utiliser de tuple pour cela, mais pourquoi ne pas créer une classe ordinaire?
Cela devrait être formalisé comme des signatures de méthode différentes.