2

SEのCodeDOMを使用したクラス名の検証方法を見つけ、それを使用しました:

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

このリンクから:クラス名を検証する .NET 関数はありますか?

ただし、クラス名には「.」を使用できません。(OEM 期間) 名前空間は次のよう System.Linqになります。たとえば、「.」を許可します。名前空間名を検証するための や loopsなどのオプションを検討する前にRegex、.NET にこのタスク用のメソッドがあるかどうかを知りたいと思います。

編集:

実際のシナリオは、私にはからがあります。ユーザーは、テキスト ボックスからクラス名と名前空間を指定できます。そのクラス名と名前空間に対して、生成されたコードを提供します。ユーザーがクラス名として SomeClass を入力し、名前空間として Some.Namespace を入力した場合、生成されるコードは次のようになります。

namespace Some.Namespace   
{   
  class SomeClass{}   
}

そのためには、ユーザーが入力した 2 つの名前を検証する必要があります。

4

2 に答える 2

5

私は別のアプローチを試しましたが、それは私にとってはうまくいきます。

public bool IsValidNamespace(string input)  
        {  
            //Split the string from '.' and check each part for validity  
            string[] strArray = input.Split('.');  
            foreach (string item in strArray)  
            {                  
                if (! CodeGenerator.IsValidLanguageIndependentIdentifier(item))  
                    return false;  
            }  
            return true;   
        }
于 2013-03-11T08:43:29.870 に答える
0

そのために使えますCodeGenerator.ValidateIdentifiers()

ツリー全体をチェックしたくない場合は、名前空間の名前を 1 つだけ確認したい場合は、そのための一時オブジェクトを作成できます。

CodeGenerator.ValidateIdentifiers(new CodeNamespace(namespaceName));

ドキュメントによると、識別子が有効でない場合、メソッドは をスローしArgumentExceptionます。

于 2013-03-08T13:04:19.610 に答える