[英]How do I prevent C# from prefixing the temporary path to my original path?
[英]How do I prevent ReSharper from prefixing built in types with an '@' symbol when generating code?
我正在編寫一個ReSharper插件,我想這樣做:
CSharpElementFactory factory = CSharpElementFactory.GetInstance(treeNode.GetPsiModule());
factory.CreateTypeMemberDeclaration(
"public static $0 $1 (this $2 $4) { }",
"string",
someMethodName,
someArgumentType,
SomeArgumentName);
我想輸出代碼:
public static string SomeMethodName(this SomeArgumentType someArgumentName) { }
但實際上輸出以下內容:
public static @string SomeMethodName(this SomeArgumentType someArgumentName) { }
它似乎是用int
做到的(我假設其他內置類型或關鍵字)。
如何防止它這樣做並輸出有效代碼?
如果您想使用關鍵字“字符串”,則不能使用引號。 在模式中使用“字符串”(否則ReSharper將嘗試轉義“字符串”關鍵字以在標識符位置使用):
public static string $0 (this $1 $2){}
如果要使用“ System.String”,可以將“ $ 0”顯式綁定到IDeclaredType以獲取字符串:
IPsiModule module;
factory.CreateTypeMemberDeclaration("public static $0 $1 (this $2 $4){}",module.GetPredefinedType().String,someMethodName, someArgumentType,SomeArgumentName);
在這種情況下,ReSharper應該遵循代碼樣式,並在代碼樣式設置為使用關鍵字時自動將其替換為'string',但是我不確定它是否可以工作=(
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.