gpt4 book ai didi

c# - Visual Studio 代码片段重构

转载 作者:太空宇宙 更新时间:2023-11-03 12:39:19 25 4
gpt4 key购买 nike

我创建了以下简单的代码段

<?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);
}
}

是否可以更改所有 $PropertyType$ 位置,例如在重构期间初始插入代码段后更改其中一个位置?

最佳答案

没有。片段只是生成文本的一种快速方式。一旦插入,VS 就会失去所有关于它的知识和上下文。当然,您可以简单地重新插入具有正确类型的代码段,但是任何重构都无法知道代码来自代码段。

如果您觉得自己特别雄心勃勃,可以试试写 Roslyn跟踪哪些代码部分来自片段变量的扩展,并进行片段感知重构以更改所有变量实例。即便如此,这也无法跨 session 工作,除非您制作带有注释的代码片段标记代码(//snippet: Observable Property),或者(如果您感觉真的雄心勃勃) 您主动将代码与片段匹配,无论它们最初是否来自片段,并对匹配的树进行操作。虽然功能强大,但如果有人真的只是想更改部分代码,它可能会让人大吃一惊。

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

关于c# - Visual Studio 代码片段重构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39611816/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com