2012-04-30 5 views
3

私はいくつかのファイルの解析と検証の結果を表すいくつかのクラスをライブラリに持っています。私のクラスをフォーマットするには? toString、GUIまたは他の方法で?

これらのクラスは、私は、ライブラリを使用するGUIアプリケーションを書いて、リッチテキストボックスに読める形式でこれらのクラスを書くためのいくつかの機能を書いたなど

列挙、無効なプロパティのリストが含まれています。

クラスのToStringオーバーライドでこの書式を記述する必要があるかもしれないということが私にはたった今起こりました。

しかし、すべてこのフォーマットは、だから私は思っていたなど

を、タブ、改行を挿入するリストの上にいくつかの反復を含み、列挙型の記述を抽出することを含む、非常に長いです - のtoStringのサイズと複雑さのためスタンダールは何ですか?私はtoStringに難しい書式を書いていると思いますか?あるいは、私はいくつかの他の共通のインターフェイスを提供する必要があります - クラスのフォーマットされた印刷可能な出力のための共通のインターフェイスはありますか?それともGUIアプリケーションでやるのでしょうか?

ありがとうございます!

+0

ローカリゼーションを忘れないでください。 GUIテキストはリソースファイル内になければなりません。あなたのプログラムは1つの言語でしか使用できないと確信していますか?あなたのコードの少なくとも一部を見ることなく、あなたがしたいことをどのようにして最善を尽くすべきかを伝えるのは難しいです。 ToStringは、intの値のような本当に基本的な値を得るのに最も効果的なようです。また、オブジェクトのデバッグ表現を取得するのにも便利です。たとえば、列挙型のToStringを実行すると、たぶんキャメルケースの値が得られます。これはおそらくユーザーに表示するものではありません。 – mortb

答えて

2

UIの書式設定のようなものは、UIライブラリ以外のライブラリには書き込まないでください。

代わりに、UIに表示されることを期待してフォーマットを生成するために必要な複雑なコードを行うことができるように、エンティティをフォーマットできるUIに依存しないクラスを用意する必要があります。これらは、シンプルなインターフェイスを使用することができ

、のようなもの:

public interface IEntityFormatter<T> 
{ 
    string GetFormattedValue(T myEntity); 
} 

public class Customer 
{ 
    public string FullName {get;set;} 
} 

public class CustomerFormatter : IEntityFormatter<Customer> 
{ 
    public string GetFormattedValue(Customer myEntity) 
    { 
     return myEntity.FullName; 
    } 
} 
0

は一般的に、ToStringがそうでなければ、非常に複雑であってはならない、それが(それは多くの場合、デバッガによって自動的に呼び出されますことに注意してください)デバッグが遅くなる場合があります。独自のインターフェースを追加することで、さらにカスタマイズを加えることができます。一方、書式の設定が不要な場合は、ToStringを実装するのがよいでしょう。

関連する問題