2011-05-17 39 views
6

我曾經使用過我看到/發現的代碼片段,它會將我的單個語句轉變爲私有/公共getter/setter,但至今我無法重新查找,因爲重新安裝了我的機器。代碼片段來自動創建getter/setter?

例如:

private string serverSMTP = string.empty; 

然後我可以按Ctrl K +,把它變成這樣:

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

我如何能創造的東西做或延伸/段任何想法爲我照顧它?在較大的項目中,這會爲我節省很多時間。

+1

這與mvvm和wpf有關嗎? – 2011-05-17 19:25:09

+0

我還沒有看到它在setter中的RaisePropertyChanged調用完成。然而,你可能有一個插件,將此行爲添加到對比對不起我沒有幫助..但我知道你可以這樣做:public string ServerSMTP {get;組; } – 2011-05-17 19:26:59

回答

6

如果您已經在使用MVVM Light框架,您可以安裝隨附的代碼片段,它將執行類似的操作。具體而言,「mvvminpc」片段將執行您正在查找的內容,但它不會將現有的字段聲明轉換爲具有屬性已更改通知的屬性。

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

代碼片段,加快增加新的特性(僅Visual Studio中):
mvvminpc增加了一個新的綁定屬性到視圖模型。
mvvmlocatorproperty將新的ViewModel添加到ViewModeLocator。
mvvmpropa向DependencyObject添加一個新的附加屬性(僅限WPF)。
mvvmpropdp向DependencyObject(僅限WPF)添加一個新的依賴項屬性。
mvvmslpropa向DependencyObject(僅限Silverlight)添加一個新的附加屬性。
mvvmslpropdp向DependencyObject(僅限Silverlight)添加一個新的依賴項屬性。

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:\用戶[YOUR_USERNAME] \文檔\ Visual Studio 2010的\代碼段\的Visual C#\我的代碼段

然後你就可以使用這個片段使用(propn + tab + tab)快捷方式。

片段xml非常容易理解,因此您可以根據自己的需要輕鬆調整它。

+1

不應該在任何情況下引發事件,但只有當屬性實際發生更改時,才應該執行檢查'field!= value'。 – 2011-05-17 20:01:16

+0

不是真的。它不會破壞任何東西。 – 2011-05-17 20:11:45

+1

然後你可以通過'自動化'這個codesnippet節省一些自己的努力:http://www.codeproject.com/KB/codegen/CodeSnippetAutomation.aspx – ColinE 2011-05-17 21:04:47