2009-02-27 3 views
3

Je travaille sur VS2008 et C#, et je cherche un générateur de code (gratuit) pour générer une propriété avec getter et setter, ainsi que le backing privé champ pour aller avec. Le modèle thingy dans VS ne fait pas le champ pour aller avec. Je cherche juste quelque chose d'un peu mieux.Générateur de code pour générer une propriété et un backing field

Une fois, j'ai vu un site Web où vous pouviez construire ce code, puis le coller et le coller de la page Web à votre code.

+1

Peut-être que vous devriez essayer CodeRush Express: http://www.devexpress.com/Products/Visual_Studio_Add-in/CodeRushX/ – Oliver

Répondre

5

Vous pouvez créer des extraits personnalisés pour faire à peu près tout ce que vous voulez. Voici un je en VS2005 pour créer des propriétés avec des champs d'accompagnement:

<?xml version="1.0" encoding="utf-8" ?> 
<CodeSnippets xmlns="http://schemas.microsoft.com/VisualStudio/2005/CodeSnippet"> 
    <CodeSnippet Format="1.0.0"> 
     <Header> 
      <Title>prop</Title> 
        <!-- the shortcut below will show in your intellisense 
         window - set it to whatever you wish --> 
      <Shortcut>_prop</Shortcut> 
      <Description>Code snippet for a property</Description> 
      <Author>Andrew</Author> 
      <SnippetTypes> 
       <SnippetType>Expansion</SnippetType> 
      </SnippetTypes> 
     </Header> 
     <Snippet> 
      <Declarations> 
       <Literal> 
        <ID>type</ID> 
        <Default>String</Default> 
        <ToolTip>property type</ToolTip> 
       </Literal> 
       <Literal> 
        <ID>pname</ID> 
        <Default>_name</Default> 
        <ToolTip>private field name</ToolTip> 
       </Literal> 
       <Literal> 
        <ID>name</ID> 
        <Default>Name</Default> 
        <ToolTip>property name</ToolTip> 
       </Literal> 
      </Declarations> 
      <Code Language="csharp"> 
        <![CDATA[$type$ $pname$; 

      public $type$ $name$ 
      { 
       get { return this.$pname$; } 
       set { this.$pname$ = value; } 
      }$end$]]> 
      </Code> 
     </Snippet> 
    </CodeSnippet> 
</CodeSnippets> 

Enregistrer ce dans un fichier appelé whatever.snippet à cet endroit:

"C:\Documents and Settings\<YOU>\My Documents\Visual Studio 2005\Code Snippets\Visual C#\My Code Snippets"

+0

Cela fonctionne bien, mais tout est en ligne: bool _Visibl e; public bool Visible {get {return this._Visible; } set {this._Visible = valeur; }} Comment puis-je ajouter des retours chariot pour étendre tout cela? – MattSlay

+0

Comme les nouvelles lignes sont dans la section CDATA, elles doivent être conservées. Très étrange - je vois les nouvelles lignes sur ma machine :) –

+0

Ahhh .. Je vois. Il s'est gâté pendant le copier-coller de la page Web vers le nouveau fichier XML que j'ai créé. Je l'ai réparé, et maintenant ça marche! Awesome aide. Merci. – MattSlay

0

Je regardais autour de StackOverlfow avant que je poste pour essayer de trouver la réponse, parce que j'étais sûr que c'était déjà abordé avant. J'ai détesté poster, mais j'ai regardé d'abord, je le promets.

Je regardais plus, un je trouve cet autre fil utile ici:

How to generate getters and setters in Visual Studio?

0

Avec CodeSmith est juste un clic. Parfois est préférable d'acheter l'outil, au lieu de réinventer la roue

<%-- 
Name: Database Table Properties 
Authors: Paul Welter , Yordan Georgiev 
Description: Create a list of properties from a database table with a region for each prop 
--%> 
<%@ CodeTemplate Language="C#" TargetLanguage="C#" Debug="False" Description="Create a list of properties from database table." %> 
<%@ Property Name="SourceTable" Type="SchemaExplorer.TableSchema" Category="Context" Description="Table that the object is based on." %> 
<%@ Map Name="CSharpAlias" Src="System-CSharpAlias" Description="System to C# Type Map" %> 
<%@ Assembly Name="SchemaExplorer" %> 
<%@ Import Namespace="SchemaExplorer" %> 

<% foreach (ColumnSchema column in this.SourceTable.Columns) { %> 

#region <%= StringUtil.ToPascalCase(column.Name) %> 
private <%= CSharpAlias[column.SystemType.FullName] %> _<%= StringUtil.ToPascalCase(column.Name) %>; 

public <%= CSharpAlias[column.SystemType.FullName] %> <%= StringUtil.ToPascalCase(column.Name) %> 
{ 
    get { return _<%= StringUtil.ToPascalCase(column.Name) %>; } 
    set { _<%= StringUtil.ToPascalCase(column.Name) %> = value; } 
} 
#endregion <%= StringUtil.ToPascalCase(column.Name) %> 
<% } %> 
0

Comme je suis sûr que vous le savez déjà, le compilateur C# dans VS 2008 génère automatiquement des accesseurs pour les propriétés lors de la compilation. Cela fonctionne même pour les applications .NET 2.0 car tout est fait dans le compilateur.

Cela signifie que vous pouvez faire ceci:

public int Number { get; set; } 

Au lieu de

private int _number; 
public int Number 
{ 
get { return this._number; } 
set { this._number = value; } 
} 
Questions connexes