繁体   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