J'ai une classe utilisée pour construire un objet de requête à passer à une API: Cependant, il y a un cas de bord où un paramètre facultatif doit être ajouté à l'objet de la demande. . Ma première pensée était d'hériter de la classe Baserequest mais je ne vois pas comment créer cela et la rendre syntaxiquement correcte. P> erreur: il n'y a pas d'argument donné que cela correspond au paramètre formel requis 'UpdatedatedMin' de 'BasereQuest.Basequest (DateTime, Int) P> Peut-on aider à aider? Esssitionnement, je souhaite créer une instance de la basequest avec le constructeur habituel mais ajoutant dans l'extraparamètre. P> Merci beaucoup, et mes excuses pour mon ignorance malade! P> P>
3 Réponses :
Le constructeur de votre classe de base a des paramètres: mais vous n'abumez pas de valeurs pour ces paramètres: p> public CaseRequest(DateTime updatedAtMin, int page, bool extraParameter) : base(updatedAtMin, page)
{
this.extraParameter = extraParameter;
}
Votre problème est simple car l'erreur indique. p>
Il n'y a pas d'argument donné qui correspond à la formelle requise Paramètre 'UpdatedatedMin' de 'Baserequest.Basequest (DateTime, Int) P> blockQuote>
Vous définissez un constructeur dans la basequest. Cela élimine le constructeur sans paramétrage par défaut. Ce qui signifie ... p>
CaseRequest public (Bool Extraparamètre): Base () P> blockQuote>
ne trouve pas la base () parce que la base () n'existe pas. P>
Vous devez accepter l'autre paramètre et les transmettre à la base définie pour être correctement correct. P>
Vous pouvez essayer ce qui suit
La classe de base n'a pas de constructeur sans paramètre, mais vous l'appelez avec
base () code>En tant que note latérale, je vous conseillerais vivement de commencer à suivre les conventions de nommage .NET pour vos propriétés.
@ Jonskeet - Il y a de nombreuses années, j'étais un stickler pour la dénomination des conventions (rappelez-vous la notation hongroise?) Cependant, j'ai été persuadé qu'ils ne comptent pas vraiment, en particulier avec IntelliSense. Pouvez-vous me donner une idée de la raison pour laquelle vous «vous conseillez fortement» de commencer à les suivre? (En côté, je viens de commencer à travailler sur ce projet hérité et je suis à la suite du modèle de nommage que j'ai trouvé, tout comme je dois supporter de ne pas avoir d'accolades pour simples déclarations)
Parce que cela rend plus clair pour tout le monde les lisant, qui est habitué aux conventions. Les conventions C # sont presque universellement suivies de mon expérience. Même si le projet que vous avez travaillé sur les violons, vous présentez un exemple de code ici pour que les gens de lire qui ne soient pas i> travailler sur ce projet - il est donc préférable d'optimiser pour leur expérience de lecture, qui est de suivre les conventions normales.
Merci @Jonskeet - Si je publie un code à nouveau, je serai sûr de faire comme vous le suggérez.