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