我正在尝试序列化我在班级中定义的DBParameters。
当它尝试转换为序列化时,会出现以下错误。
“使用XmlInclude或SoapInclude属性指定静态未知的类型。”
这是我的代码
[Serializable]
public class DemoClass{
public List<DbParameter> Parameters { get; set; }
}
任何人都可以帮我解决这个问题吗?如何序列化参数属性?
由于
答案 0 :(得分:2)
DbParameter
不是序列化的好选择。
首先,存在一个抽象基类的问题,因此对于大多数序列化程序(包括XmlSerializer
),您需要提前正式宣传预期的具体子类 - 以及那些不需要这通常需要[Serializable]
- 而不是它。
第二个(也许是更重要的)问题是它是实现(它基本上与ADO.NET联系在一起),其中 - 序列化应该是关于数据。
我强烈建议您编写自己的DTO模型以进行序列化,重点关注您需要了解的内容,例如Name
,Value
是最明显的事情,但DataType
和Direction
也很重要 - 并序列化您自己的模型。这将解决这两个问题。
还有第三个问题,就是我会首先质疑序列化参数的目的。如果这是出于RPC的目的,我强烈反对它,因为它听起来就像你正在打开一个任意的sql漏洞一样。对于RPC,只需定义并传递参数/参数作为服务边界的一部分。