簡體   English   中英

在生成代碼時,如何防止ReSharper在內置類型前面加上“ @”符號?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM