ASP.NET:确定序列化为XML的对象类型的最佳方法

时间:2011-01-02 06:19:41

标签: asp.net xml generics xml-serialization

我的SQL Server数据库中有一个表,其中包含用户在系统中执行的某些操作的审核信息。执行操作的人员,执行操作的时间以及可以轻松跨越多个操作的所有信息。但是,根据所执行的操作,可能还有其他我想要捕获的信息,这些信息特定于操作。为了解决这个问题,我选择在表中添加一个“XML元数据”列,该表包含我创建的不同元数据对象的序列化XML。我为每个我有兴趣跟踪额外操作的操作创建了一个元数据对象。因此,每个对象都负责跟踪其动作的特定额外信息(元数据)。对象被序列化并写入我的新列。

我有SystemAction个用于存储此表信息的对象,并且我添加了一个字符串字段,用于保存数据库中的XML字符串。问题是,当我从SystemAction对象中读回这个XML时,我正在努力将它一般地转换回它的正确元数据对象。每个元数据对象都将具有不同的字段,每个对象都有自己的静态方法,该方法接受XML字符串并尝试返回元数据对象类型。所以我可以说:

SomeActionMetadata mdObj = SomeActionMetadata.BuildFromXML(xmlStringFromDB);

但我真的不知道如何说“这里有一些可以转换为任意数量的不同对象的XML。弄清楚它并给我正确的对象。”

鉴于我当前的实现,我总是可以为每个元数据对象分配一个唯一的ID,该元数据对象存储为每个对象中的一个字段,然后使用case语句打开该ID并使用相应的类的静态构建方法来构建正确的对象。但我希望能有一些比这更自动的东西。如果我有一个SystemAction对象列表并且只想循环它们并生成正确的元数据对象类型怎么办?

我希望有人可能会遇到类似于此的事情,或者可以指向我可以帮助我的文章或帖子。非常感谢。

1 个答案:

答案 0 :(得分:1)

正如Subhash Dike在下面的评论中指出的那样,有一个类似的SO问题here能够指出我正确的方向。