代码片段自动创建getter / setter?

时间:2011-05-17 19:23:26

标签: wpf visual-studio-2010 mvvm-light

我曾经使用过我在过去看到/找到的代码片段,它将我的单个语句转换为私有/公共getter / setter,自从重新安装我的机器以来,我一直无法重复该查找。

例如:

private string serverSMTP = string.empty;

然后我可以按Ctrl +并将其转换为:

        private string serverSMTP = string.Empty;
    public string ServerSMTP
    {
        get { return serverSMTP; }
        set
        {
            serverSMTP = value;
            RaisePropertyChanged("ServerSMTP");
        }
    }

有关如何创建某些内容或扩展/片段以便为我处理的任何想法?在较大的项目中,这将为我节省大量时间。

2 个答案:

答案 0 :(得分:6)

如果您已经在使用MVVM Light框架,则可以安装随附的代码片段,它们将执行类似的操作。具体来说,“mvvminpc”代码段将执行您要查找的内容,但它不会使用现有字段声明并将其转换为具有propertychanged通知的属性。

http://mvvmlight.codeplex.com/sourcecontrol/latest#Installer/InstallItems/Snippets/CSharp/mvvmInpc.snippet

  

代码片段以加速添加新属性(仅限Visual Studio):
  mvvminpc将新的可绑定属性添加到ViewModel。
  mvvmlocatorproperty将新的ViewModel添加到ViewModeLocator。
  mvvmpropa向DependencyObject添加新的附加属性(仅限WPF)。
  mvvmpropdp将新的依赖项属性添加到DependencyObject(仅限WPF)。
  mvvmslpropa向DependencyObject添加新的附加属性(仅限Silverlight)。
  mvvmslpropdp将新的依赖项属性添加到DependencyObject(仅限Silverlight)。

答案 1 :(得分:3)

把这个片段:

<?xml version="1.0" encoding="utf-8"?>
<CodeSnippets
    xmlns="http://schemas.microsoft.com/VisualStudio/2005/CodeSnippet">
    <CodeSnippet Format="1.0.0">
        <Header>
            <Shortcut>propn</Shortcut>
            <Title>
                Notify Property
            </Title>
        </Header>

        <Snippet>
            <Declarations>
                <Literal>
                    <ID>type</ID>
                    <ToolTip>Type</ToolTip>
                    <Default>int</Default>
                </Literal>
                <Literal>
                    <ID>field</ID>
                    <ToolTip>Field name</ToolTip>
                    <Default>fieldName</Default>
                </Literal>
                <Literal>
                    <ID>property</ID>
                    <ToolTip>Propery Name</ToolTip>
                    <Default>PropertyName</Default>
                </Literal>
            </Declarations>

            <Code Language="CSharp">
                <![CDATA[       
private $type$ $field$;
public $type$ $property$
{
    get { return $field$; }
    set
    {
        $field$ = value;
        if (PropertyChanged != null)
            PropertyChanged(this, new PropertyChangedEventArgs("$property$"));
    }
}
$end$]]>
            </Code>
        </Snippet>
    </CodeSnippet>
</CodeSnippets>

在文件propn.snippet中,在此文件夹中: C:\ Users [YOUR_USERNAME] \ Documents \ Visual Studio 2010 \ Code Snippets \ Visual C#\ My Code Snippets

之后您可以使用(propn + tab + tab)快捷方式使用此代码段。

snippet xml非常易于理解,因此您可以轻松地将其调整为您需要的任何内容。