2011-01-02 5 views
0

ユーザーが自分のシステム内で行う特定のアクションの監査情報を保持するSQL Serverデータベース内のテーブルがあります。誰がアクションを実行したか、実行されたか、どのアクションが複数のアクションにまたがる可能性があるすべての情報であるかのようなものです。しかし、実行されるアクションによっては、キャプチャしたい、つまりそのアクションに固有の情報が他にもあるかもしれません。これを処理するために、私は、作成した異なるメタデータオブジェクトのシリアル化されたXMLを保持するテーブルに「XMLメタデータ」列を追加することにしました。私は余分なものを追跡することに興味があるそれぞれのアクションのメタデータオブジェクトを作成しました。したがって、各オブジェクトは、アクションの特定の追加情報(メタデータ)を追跡する責任があります。オブジェクトはシリアル化され、新しい列に書き込まれます。ASP.NET:XMLにシリアル化されたオブジェクトの型を判断する最も良い方法

私はSystemActionオブジェクトを持っていますが、このテーブルの情報を格納するために使用しています。そして、DBからXML文字列を保持する文字列フィールドを追加しました。問題は、私がSystemActionオブジェクトからこのXMLを読んでいるとき、私はそれを一般的に正しいメタデータオブジェクトに変換する方法に苦労しています。各メタデータオブジェクトは異なるフィールドを持ち、各オブジェクトは独自の静的メソッドを持ち、XMLストリングを取り、メタデータオブジェクトタイプを返そうとします。

SomeActionMetadata mdObj = SomeActionMetadata.BuildFromXML(xmlStringFromDB);

をしかし、私は本当にここでは、異なるオブジェクトの任意の数に変換することができ、いくつかのXMLだ」と言う方法を知らないそれを把握し、戻って私に権利オブジェクトを与える:だから私は言うことができます。 "

私の現在の実装では、各オブジェクトのフィールドとして格納されている各メタデータオブジェクトに一意のIDを割り当ててから、そのIDをオンに切り替えて適切なクラスの静的ビルドメソッドを正しいオブジェクトを構築する。しかし、私はそれよりも少し自動化を望んでいました。私がSystemActionオブジェクトのリストを持っていて、それらをループして正しいメタデータオブジェクトタイプを生成したいのであれば、どうしたらいいですか?

誰かがこれまでに似たようなことをしているかもしれないと思っていたのですが、記事や投稿に私を助けてくれるかもしれません。どうもありがとう。

+0

xmlシリアル化をSystem.Xml.Serializationで使用するのはなぜですか?これは、2-way XMLシリアライゼーションです。 –

+0

http://stackoverflow.com/questions/775647/how-do-i-deserialize-xml-without-knowing-the-type-beforehandの重複している可能性があります。そこに記載されていることを試してみてくださいあなたの問題 –

+0

@Subhash、私の問題を解決するのに十分な方向に指摘しました。ありがとう! –

答えて

1

下記のコメントのSubhash Dikeに示されているように、同様のSO質問hereがあり、正しい方向に向けることができました。

関連する問題