Je me suis habitué à de nombreux IDE Java ( Eclipse , NetBeans et IntelliJ IDEA ) qui vous fournissent une commande pour générer un constructeur par défaut pour une classe en fonction des champs de la classe.
Par exemple:
public class Example
{
public decimal MyNumber { get; set; }
public string Description { get; set; }
public int SomeInteger { get; set; }
// ↓↓↓ This is what I want generated ↓↓↓
public Example(decimal myNumber, string description, int someInteger)
{
MyNumber = myNumber;
Description = description;
SomeInteger = someInteger;
}
}
Faire remplir tous les champs d'un objet par un constructeur est une tâche si courante dans la plupart des langages POO, je suppose qu'il existe un moyen pour moi de gagner du temps en écrivant ce code standard en C #. Je suis nouveau dans le monde C #, alors je me demande si je manque quelque chose de fondamental dans le langage? Existe-t-il une option dans Visual Studio qui est évidente?
Dans Visual Studio 2015 Update3, j'ai cette fonctionnalité.
Juste en mettant en surbrillance les propriétés, puis appuyez sur Ctrl+ ., puis appuyez sur Générer le constructeur .
Par exemple, si vous avez mis en évidence deux propriétés, il vous suggérera de créer un constructeur avec deux paramètres et si vous en avez sélectionné trois, il en suggérera un avec trois paramètres et ainsi de suite.
Il fonctionne également avec Visual Studio 2017.
la source
public int Age { get; }
) Ils doivent avoir un paramètre spécifié, même temporairement, pour que l'option soit disponible. Testé dans la communauté VS2015; Je ne sais pas si cela a été corrigé dans VS2017.C # a ajouté une nouvelle fonctionnalité dans Visual Studio 2010 appelée générer à partir de l'utilisation. L'intention est de générer le code standard à partir d'un modèle d'utilisation. L'une des fonctionnalités génère un constructeur basé sur un modèle d'initialisation.
La fonction est accessible via la balise active qui apparaîtra lorsque le motif est détecté.
Par exemple, disons que j'ai la classe suivante
Et j'écris ce qui suit dans mon application
Un constructeur prenant un
int
n'existe pas, donc une balise active apparaîtra et l'une des options sera "Générer le stub du constructeur". La sélection de cela modifiera le code pourMyType
être le suivant.la source
Vous pouvez écrire une macro pour ce faire - vous utiliseriez l'analyseur de Visual Studio pour récupérer des informations sur les membres de la classe.
J'ai écrit une macro similaire. (Je vais partager le code ci-dessous). La macro que j'ai écrite est pour copier en avant tous les constructeurs d'une classe de base lorsque vous en héritez (utile pour les classes comme Exception qui ont beaucoup de surcharges sur le ctor).
Voici ma macro (encore une fois, cela ne résout pas votre problème, mais vous pouvez probablement modifier pour faire ce que vous voulez)
la source
À partir de Visual Studio 2017, cela semble être une fonctionnalité intégrée. Appuyez sur Ctrl+ .pendant que votre curseur est dans le corps de la classe, et sélectionnez "Générer un constructeur" dans la liste déroulante Actions rapides et refactorisations .
la source
Voici une macro que j'utilise à cet effet. Il générera un constructeur à partir des champs et des propriétés qui ont un setter privé.
la source
Peut-être que vous pourriez essayer ceci: http://cometaddin.codeplex.com/
la source
Vous pouvez le faire facilement avec ReSharper 8 ou version ultérieure. La
ctorf
,ctorp
et desctorfp
extraits génèrent des constructeurs qui peuplent tous les champs, les propriétés ou les champs et les propriétés d'une classe.la source
Voici la macro Visual Studio de JMarsh modifiée pour générer un constructeur basé sur les champs et les propriétés de la classe.
la source
Pour Visual Studio 2015, j'ai trouvé une extension qui fait exactement cela. Il semble bien fonctionner et le nombre de téléchargements est raisonnablement élevé. Donc, si vous ne pouvez pas ou ne voulez pas utiliser ReSharper, vous pouvez installer celui-ci à la place.
Vous pouvez également l'acquérir via NuGet .
la source
J'utilise l'astuce suivante:
Je sélectionne la déclaration de la classe avec les données-membres et appuie sur:
Ctrl+ C, Shift+ Ctrl+ C, Ctrl+ V.
Le PROGRAM obtient la déclaration du presse-papiers, trouve le nom de la classe, trouve tous les membres et leurs types, génère le constructeur et le copie tout dans le presse-papiers.
Nous le faisons avec des étudiants de première année sur ma pratique "Programming-I" (Université Charles, Prague) et la plupart des étudiants le font jusqu'à la fin de l'heure.
Si vous voulez voir le code source, faites-le moi savoir.
la source