说实话看到xml就有些晕,不过相对于不断的重复
static readonly ILog logger =
LogManager.GetLogger(typeof(DataSourceConcurrencyTest));
LogManager.GetLogger(typeof(DataSourceConcurrencyTest));
总是相对好些。
vs2005采用了snippet生成策略,使用xml来制定规则
直接看一下for和prop你就很容易写出上面的logger生成snippet,如下
<?xml version="1.0" encoding="utf-8" ?>
<CodeSnippets xmlns="http://schemas.microsoft.com/VisualStudio/2005/CodeSnippet">
<CodeSnippet Format="1.0.0">
<Header>
<Title>logger</Title>
<Shortcut>logger</Shortcut>
<Description>Code snippet for 'log4net' declaration</Description>
<Author>Survivalsoft Corporation</Author>
<SnippetTypes>
<SnippetType>Expansion</SnippetType>
<SnippetType>SurroundsWith</SnippetType>
</SnippetTypes>
</Header>
<Snippet>
<Declarations>
<Literal>
<ID>ClassName</ID>
<Default>ClassName</Default>
<ToolTip>ClassName</ToolTip>
</Literal>
</Declarations>
<Code Language="csharp"><![CDATA[static readonly ILog logger = LogManager.GetLogger(typeof($ClassName$));]]>
</Code>
</Snippet>
</CodeSnippet>
</CodeSnippets>
<CodeSnippets xmlns="http://schemas.microsoft.com/VisualStudio/2005/CodeSnippet">
<CodeSnippet Format="1.0.0">
<Header>
<Title>logger</Title>
<Shortcut>logger</Shortcut>
<Description>Code snippet for 'log4net' declaration</Description>
<Author>Survivalsoft Corporation</Author>
<SnippetTypes>
<SnippetType>Expansion</SnippetType>
<SnippetType>SurroundsWith</SnippetType>
</SnippetTypes>
</Header>
<Snippet>
<Declarations>
<Literal>
<ID>ClassName</ID>
<Default>ClassName</Default>
<ToolTip>ClassName</ToolTip>
</Literal>
</Declarations>
<Code Language="csharp"><![CDATA[static readonly ILog logger = LogManager.GetLogger(typeof($ClassName$));]]>
</Code>
</Snippet>
</CodeSnippet>
</CodeSnippets>
重点就落在最后的<Decarations>和<Code>上,没什么难度,只是xml让我心里堵得慌。
不妨打开VIM,然后在cmd中输入,
:map
<F5> 0idef
<Esc>oend<Esc>O<Space><Space>
很轻很自由,我想这才是我想要的,呵呵