2016-05-05 6 views
0

アプリが人間の読める文字列(例:ログメッセージなど)を出し始めた後に、これらの文字列をプログラム的に処理したり、特定の文字列を一方向に表示したり、発生回数識別子をメッセージに関連付けるための良い解決策は何ですか?

これを行うには、これらの文字列を処理するコードに、各文字列が何を意味するのかというアイディアが必要なので、それに応じて分類して処理することができます。明らかに、各メッセージのテキストと文字列の比較を行うコードは望ましくありません。それは扱いにくく壊れやすいものです。

文字列の先頭にM123のようなメッセージ識別子が付いているので、処理コードでこの識別子を読み取ってその文字列を処理する方法を判断できます。すでに使用されているメッセージ識別子を追跡する必要があるため、これはあまり望ましいものではないようです。

例:いくつかのロボットを起動するアプリがあります。それらを初期化し、目的のタスクを実行します。最初のロボットとの対話のアプリのさまざまな部分は、このようないくつかの出力(おそらくログ)へのテキストメッセージを発行します。

ロボット1つのスタートの初期化 ロボットSSHを待って1返信 ロボット2スタートの初期化 ロボット4初期化の完全な ロボット3を使用すると、テキストのスクロールログに加えて、あなたはグラフィックの表現のいくつかの並べ替えを表示したいことを実現しながら、後...ロボット1は をシャットダウンさ タイムアウト内

を返信することができませんでした各ロボット、おそらくその存続期間中に起こり得る重要なマイルストーンのチェックボックスを備えたウィンドウ。これは、より有用で代替的なUIになります。

たとえば、ロボットが正常に起動したとき、およびタスクが正常に完了したときなどのチェックボックスを表示するとします。

この新しい「ビュー」は、アプリが発行した現在のメッセージをどのように解釈して、「意味する」ものが分かっていて処理できるのでしょうか?たとえば、ビューが、初期化を完了したロボットのインジケータを表示したい場合は、「Robot N initialization complete」というテキストを検索するログメッセージに対して文字列比較を実行する必要がありますか?あなたはいつかログメッセージのテキストを微調整するかもしれないので、それは壊れやすいようです。

「M24ロボット1は初期化を完了しました」のように、各ログメッセージの発信にユニークで変化しないメッセージ識別子を付けることもできます。これは、新しいビューはM24を解析し、それが "初期化完了"の略であることを知っています。

+0

これはかなり曖昧で抽象的です。あなたは私たちにあなたのものの具体例を示すことができる例えば

... ToStringメソッドのmethosを上書きすることができます –

+0

[KeyValuePair](https://msdn.microsoft.com/en-us/library/5tbh8a42%28v=vs.110%29.aspx) –

+0

リムに行くbここに...番号(エラーコード)とログに記録されたメッセージを関連づけようとしていますか?ユニークなエラーコードだけでなく、コンパイル間で変化しない静的な値を目標にしていますか? – Anssssss

答えて

1

この場合、2つの小道具と1つの単純なクラスを参照してください... 1つの文字列と別の識別子と私はそれをメモリ内に保持する必要があります... "実行時のユーザーは文字列プロパティのみを表示しますが、隠されたプロパティが...単純な文字列でこのクラスをreconductするには、

public class Message 
{ 
    public void int MessageId {get; set;} 
    public void string UserMessage {get; set;} 

    public override string ToString() 
    { 
     return UserMessage; 
    } 
} 
+1

それは私が思っていたものにかなり近いです。私はよりよい方法を考えることができませんが、それは理想的ではないと感じます。おそらく私たちの業界では、文字列エンティティを分類してコードをより簡単に認識できるようにするためのより良いパターンがあると考えました。 –

関連する問題