2012-04-24 7 views
2

私はファイルアップロードロジックと非常に特定のビジネスルールを持っています。そして、私はファイルモデルを "ヘッダ:{フィールド1の処理}、{フィールド2の処理}、{フィールド3の処理}、{フィールド4の処理}、{フィールド5の処理}、{フィールド6の処理}、{フィールド7の処理} }、{{フィールド8の処理}}、19個のパラメータに対して "これは最初はカスタムのシリアル化です。特定のモデルにオブジェクトを解析するためのデザインパターン

また、この行を解析してオブジェクトに戻す必要があります。だから、問題はそのようなスタッフをコーディングする共通のアイデアは何ですか?

モデルを行に解析するため、多くのオプションを持つstring.formatを使用し、行をモデル化するために、行を '、'で分割し、情報の一部を操作してモデルフィールドに割り当てます。しかし、この実装では、多くの低レベルの作業、いくつかのハードコードされた位置と私のためにかなり見えないものがたくさんあります。

答えて

1

あなたは、シリアライズ/デシリアライズをカスタムシリアライザの中に置くべきです。 .netライブラリの他のシリアライザと同じパターンに従って、IFormatterinterfaceを実装することができます。これは、あなたが、ファイル(または任意のストリーム)からストリーミングするために使用できる共通のインタフェースを提供します:

using (var fileStream = new FileStream(fileName, FileMode.Create)) 
{ 
    var formatter = new CustomFormatter(); 
    formatter.Serialize(fileStream, objectToSerialize); 
} 

using (var fileStream = new FileStream(fileName, FileMode.Read)) 
{ 
    var formatter = new CustomFormatter(); 
    return (CustomType)formatter.DeSerialize(fileStream); 
} 

あなたは、このダウンロード

2

ここでは、特にオブジェクトを非標準的な形式にシリアル化しているので、ここでは何の魔法も関与しません。あなたはたぶん「醜い」コードで生活しなければならないでしょう。

+0

custom formatterの例を見ることができますはい、のように見えますそれ。そして、私はそれが好きではありません - それは私が求めている理由です。 – Ph0en1x

関連する問題