我使用CodeDom根据用户值生成动态代码。其中一个值控制着我生成的类的名称。我知道我可以根据有关使用正则表达式的有效类名的语言规则对名称进行消毒,但是我想知道是否在框架中内置了一个特定的方法来验证和/或消灭类名。是否有.NET函数来验证类名?
21
A
回答
25
一种简单的方法来确定一个字符串是一类或可变是有效的标识符是调用静态方法
System.CodeDom.Compiler.CodeGenerator.IsValidLanguageIndependentIdentifier(string value)
2
我找到了我的问题的答案。我可以拨打电话
CodeCompiler.ValidateIdentifiers(class1);
其中class1是一个CodeObject,用于验证该CodeDom树及其下的所有标识符。所以我可以在创建我的CodeTypeDeclaration class1来验证类名称后立即调用它,或者我可以构建CodeDom,然后在最后调用它来验证我的树中的所有标识符。正是我需要的!
7
在CSharpCodeProvider
类中使用CreateValidIdentifier
方法。
CSharpCodeProvider codeProvider = new CSharpCodeProvider();
string sFixedName = codeProvider.CreateValidIdentifier("somePossiblyInvalidName");
CodeTypeDeclaration codeType = new CodeTypeDeclaration(sFixedName);
它返回给定输入的有效名称。如果您只想验证名称而不修复它,请比较输入和输出。它不会改变有效的输入,因此输出将是等效的。
1
public static bool IsReservedKeyWord(string identifier)
{
Microsoft.CSharp.CSharpCodeProvider csharpProvider = new Microsoft.CSharp.CSharpCodeProvider();
return csharpProvider.IsValidIdentifier(identifier);
}
相关问题
- 1. 是否需要验证函数参数?
- 2. Jquery函数来验证responseText
- 3. 是否有可能更改jQuery验证的错误类名称?
- 4. 是否有.net函数来枚举语言后备文件扩展名
- 5. 验证largeAddressAware是否有效?
- 6. 是否有另一种方法来验证$ _POST数据?
- 7. 是否有内置的Python异常验证函数输入?
- 8. SHA512withRSA签名验证.Net
- 9. 验证函数签名 - 接口VS类型别名
- 10. 是否有必要验证进入结果类的数据?
- 11. JavaScript函数来验证一个数组
- 12. 验证是否(不再是)有效的API名称
- 13. 如何验证arg是否是Shell中的有效文件名?
- 14. 是否有可能用鱼的同名名称来包装现有的函数?
- 15. 验证表类型是否正确来自C#
- 16. .NET 4.0中的XSD数据验证是否可靠?
- 17. 是否存在Haskell无法验证的类型签名?
- 18. 是否有可能有太多验证?
- 19. 函数来验证由用户C++
- 20. .NET:验证URL是图像
- 21. 重用jQuery从匿名函数验证
- 22. 是否有一个标准函数来迭代基类?
- 23. 有没有办法在Hapi验证中使用命名函数?
- 24. 检测类是否具有带签名的构造函数
- 25. jQuery验证具有类似名称
- 26. 有没有办法来验证数据包是否在交换机上接收?
- 27. CoffeeScript是否有类析构函数?
- 28. 在dlg类中是否有getdocument()函数?
- 29. VB6类是否具有析构函数?
- 30. 是否有用于验证文件和路径名的类型加速器?
所有这样做是如果它与一个保留冲突重命名的标识符字。如果传入的值中包含无效字符,则不会创建有效的标识符。所以这是有帮助的,但并不是在你创建新的代码类型之前需要发生的一切。 – Zach 2008-09-18 15:02:59