2016-09-21 77 views
2

我創建了以下簡單摘錄Visual Studio代碼片段重構

<?xml version="1.0" encoding="utf-8"?> 
<CodeSnippets 
    xmlns="http://schemas.microsoft.com/VisualStudio/2005/CodeSnippet"> 
    <CodeSnippet Format="1.0.0"> 
    <Header> 
     <Title>Observable Property</Title> 
     <Description>Generates an Observable property based on type and Name</Description> 
     <Shortcut>nosp</Shortcut> 
    </Header> 

    <Snippet> 
     <Declarations> 
     <Literal> 
      <ID>PropertyName</ID> 
      <ToolTip>Defines the Property Name</ToolTip> 
      <Default>Name</Default> 
     </Literal> 
     <Literal> 
      <ID>PropertyType</ID> 
      <Type>Type</Type> 
      <ToolTip>Defines the Property Type</ToolTip> 
      <Default>String</Default> 
     </Literal> 
     </Declarations> 
     <Code Language="csharp"> 
     <![CDATA[ 
     public $PropertyType$ $PropertyName$ 
     { 
      get { return Get<$PropertyType$>("$PropertyName$"); } 
      set 
      { 
       Set("$PropertyName$", value); 
      } 
     }    
     ]]> 
     </Code> 
    </Snippet> 
    </CodeSnippet> 
</CodeSnippets> 

及其工作像預期的那樣創造例如

public VirtualKeyCode Key 
    { 
     get { return Get<VirtualKeyCode>("Key"); } 
     set 
     { 
      Set("Key", value); 
     } 
    } 

是否有可能改變這一切$屬性類型$位置時的一個例如在重構期間,它們在初始插入代碼片段後發生了變化?

回答

1

編號片段只是生成文本的快捷方式。 VS一旦插入就失去了所有的知識和背景。當然,你可以用正確的類型重新插入片段,但是沒有辦法讓重構知道代碼來自代碼片段。

如果你感覺特別野心勃勃,你可以在編寫一個Roslyn擴展插件來跟蹤哪些代碼部分來自代碼片段變量,並進行代碼片段感知重構,以改變所有變量實例。即使如此,除非您使用評論(// snippet: Observable Property)或(如果您感覺真的雄心勃勃),您可以主動將代碼與片段匹配,而不管它們最初是否來自片段,並且在匹配的樹上運行。雖然功能強大,但如果有人真的試圖更改部分代碼,可能會導致意外。

...所以簡短的回答是否定的。

相關問題