2011-01-28 9 views
0

文字列のみを使用して汎用オブジェクトにアクセスしたいとします。私はリフレクションで汎用オブジェクトにアクセスすることができるので、文字列表現を正しく解析し、オブジェクトアクセストークンを抽出し、リフレクションを使用してそれらを実行する必要があることを知っています。文字列を使用したオブジェクトへのアクセスの反映

これはかなり簡単ですが、正規表現であるため、構文解析で問題が見つかりました。

最終的なターゲットは、オブジェクトのプロパティに基づいて文字列レンダリングする必要があります。例はDebuggerDisplayAttributeで、オブジェクトにアクセスして文字列を生成することができます。 文字列処理を実行するのに役立つものが見つかりませんでした。正規表現を使用して式文字列を手動で解析し始めました。例えば

、以下の式が非常に簡単:

"MyFixedString = {PropertyName}" 

だから、に囲まれたトークンは、 "{...}" オブジェクトのプロパティを表します。プロパティ名を抽出し、リフレクションを使用して値を取得し、ToString()メソッドを呼び出し、式文字列に置き換えて結果を取得します。

しかし、Idは、より複雑なオブジェクトへのアクセスを実行したい:もちろん

"MyFixedString = {Property.Method(\"MyMethodArg.1\", \"MyMethodArg.2\").Field}" 

を、すなわち(Iは、オブジェクトのアクセスがドットで区切られていることを理解する(しかし、ドットが別の要素に存在する可能性があるので、これは簡単ではありませんメソッドの引数)。また、私はメソッド、フィールド/プロパティ、インデックス付きプロパティを認識する必要があります。

悲しいことに、私はそれらを勉強誓う(正規表現の基礎を欠けている!)。

だから、私の質問です:いくつかの組み込みクラスがありますか?私は何が必要なの?そうでなければ、入力文字列を1文字(私の場合はドットとコンマ)で分割する正規表現が必要ですが、文字が二重引用符で囲まれている場合は分割しません。

最後の例は

  • プロパティ
  • 方法( "MyMethodArg.2 \" \ \ "MyMethodArg.1 \"、)
    • 方法
    • 「MyMethodArgに分割されることになります。 1 \」
    • \ "MyMethodArg.2 \"
  • フィールド
+0

正規表現が苦しんでいます。コンマでパラメータを分割する正規表現は、パラメータの1つが '\" Hello、world!\ "であれば、ひどく混乱します。 –

+0

Infact私は一重引用符で囲まれていない単一の文字列を分割正規表現を求めた。 – Luca

答えて

1

おそらくFormatWithをご覧ください。

+0

これは良いスタートポイントに見えます。 – Luca

関連する問題