문제

CodeDom을 사용하여 사용자 값을 기반으로 동적 코드를 생성하고 있습니다.이러한 값 중 하나는 내가 생성하는 클래스의 이름을 제어합니다.정규식을 사용하여 유효한 클래스 이름에 대한 언어 규칙을 기반으로 이름을 살균할 수 있다는 것을 알고 있지만, 클래스 이름을 검증 및/또는 살균하기 위해 프레임워크에 내장된 특정 메서드가 있는지 알고 싶습니다.

도움이 되었습니까?

해결책

문자열이 클래스나 변수에 대한 유효한 식별자인지 확인하는 쉬운 방법은 정적 메서드를 호출하는 것입니다.

System.CodeDom.Compiler.CodeGenerator.IsValidLanguageIndependentIdentifier(string value)

다른 팁

사용 CreateValidIdentifier 에 대한 방법 CSharpCodeProvider 수업.

CSharpCodeProvider codeProvider = new CSharpCodeProvider(); 
string sFixedName = codeProvider.CreateValidIdentifier("somePossiblyInvalidName"); 
CodeTypeDeclaration codeType = new CodeTypeDeclaration(sFixedName); 

일부 입력이 주어지면 유효한 이름을 반환합니다.이름만 확인하고 수정하지 않으려면 입력과 출력을 비교하세요.유효한 입력을 변경하지 않으므로 출력이 동일해집니다.

내 질문에 대한 답을 찾았습니다.전화할 수 있어요

CodeCompiler.ValidateIdentifiers(class1);

여기서 class1은 해당 CodeDom 트리 및 그 아래에 있는 모든 식별자의 유효성을 검사하는 CodeObject입니다.따라서 CodeTypeDeclaration class1을 생성한 후 바로 이것을 호출하여 클래스 이름만 검증할 수도 있고, CodeDom을 구축한 다음 마지막에 이것을 호출하여 트리에 있는 모든 식별자의 유효성을 검사할 수도 있습니다.내가 필요했던 것!

public static bool IsReservedKeyWord(string identifier)
        {
            Microsoft.CSharp.CSharpCodeProvider csharpProvider = new Microsoft.CSharp.CSharpCodeProvider();
            return csharpProvider.IsValidIdentifier(identifier);
        }
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top