如何在c#中序列化DBParameters

时间:2013-10-09 08:29:38

标签: c# xml-serialization

我正在尝试序列化我在班级中定义的DBParameters。

当它尝试转换为序列化时,会出现以下错误。

“使用XmlInclude或SoapInclude属性指定静态未知的类型。”

这是我的代码

[Serializable]
public class DemoClass{
public List<DbParameter> Parameters { get; set; }
}

任何人都可以帮我解决这个问题吗?如何序列化参数属性?

由于

1 个答案:

答案 0 :(得分:2)

DbParameter不是序列化的好选择。

首先,存在一个抽象基类的问题,因此对于大多数序列化程序(包括XmlSerializer),您需要提前正式宣传预期的具体子类 - 以及那些需要这通常需要[Serializable] - 而不是它。

第二个(也许是更重要的)问题是它是实现(它基本上与ADO.NET联系在一起),其中 - 序列化应该是关于数据

我强烈建议您编写自己的DTO模型以进行序列化,重点关注您需要了解的内容,例如NameValue是最明显的事情,但DataTypeDirection也很重要 - 并序列化您自己的模型。这将解决这两个问题。

还有第三个问题,就是我会首先质疑序列化参数的目的。如果这是出于RPC的目的,我强烈反对它,因为它听起来就像你正在打开一个任意的sql漏洞一样。对于RPC,只需定义并传递参数/参数作为服务边界的一部分。