سؤال

أنا أستخدم 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 عبارة عن CodeObject للتحقق من صحة جميع المعرفات في شجرة CodeDom تلك وما يليها.لذلك يمكنني استدعاء هذا مباشرة بعد أن أقوم بإنشاء 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