代码生成器工具,用于生成属性和支持字段

时间:2009-02-27 16:33:59

标签: c#

我正在使用VS2008和C#,我正在寻找一个(免费)代码生成器工具来生成一个带有getter和setter的属性,以及支持私有字段。 VS中的模板不会使该字段与它一起使用。只是寻找一些更好的东西。

我曾经看到一个网站,您可以在其中构建此代码,然后将其从网页上保存并粘贴到您的代码中。

5 个答案:

答案 0 :(得分:5)

您可以创建自定义代码段以执行您想要的任何操作。这是我在VS2005中用于创建具有支持字段的属性的一个:

<?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>

将此保存在此位置名为whatever.snippet的文件中:

  

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

答案 1 :(得分:0)

在我发布试图找到答案之前,我在StackOverlfow上环顾四周,因为我确信之前已经解决了这个问题。我讨厌发帖,但我确实先看了,我保证。

我一直在寻找更多,我在这里找到了另一个有用的帖子:

How to generate getters and setters in Visual Studio?

答案 2 :(得分:0)

点击CodeSmith只需点击一下即可。有时最好购买工具,而不是重新发明轮子

<%-- 
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) %>
<% } %>

答案 3 :(得分:0)

我相信您已经知道,VS 2008中的C#编译器会在编译时自动生成属性的getter和setter。这甚至适用于.NET 2.0应用程序,因为它都是在编译器中完成的。

这意味着你可以这样做:

public int Number { get; set; }

而不是

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

答案 4 :(得分:-1)