生成XML文档时出错。--->System.InvalidOperationException:类型Com.xxx.MyDataClass没有预料到。使用xmlclude或SoapInclude属性指定静态未知的类型。
<profile enabled="true" automaticSaveEnabled="false" defaultProvider="xxxxxxProvider">
<properties>
<add name="MyData" type="System.Collections.ArrayList"/>
</properties>
</profile>
像myarraylist这样的数据存储在myarraylist类中。
MyDataClass类目前只有两个成员,都设置为“string”。
我想我必须告诉类必须序列化自己,但我不确定如何序列化。
课程如下:
namespace Com.xxxx.DataClasses
{
public class MyDataClass : ISerializable
{
public string elem1;
public string elem2;
public string Elem1
{
get { return elem1; }
set { elem1 = value; }
}
public string Elem2
{
get { return elem2; }
set { elem2 = value; }
}
....
我可以通过以下方式解决此问题:
首先,这里有一个很好的资源:
http://msdn.microsoft.com/en-us/library/d8b58y5d.aspx
我将配置文件条目改为:
<profile enabled="true" automaticSaveEnabled="false" defaultProvider="xxxxxxProvider">
<properties>
<add name="MyData" type="mypackage.MyDataClass" serializeAs="binary"/>
</properties>
</profile>
然后,我创建了MyDataClass,以包含MyDataClassInfo对象的列表,类似于:
namespace Com.xxxx.DataClasses
{
[Serializable]
public class MyDataClass
{
List<MyDataClassInfo> myDataClassInfo;
public MyDataClassInfo()
{
myDataClassInfo = new List<MyDataClassInfo>;
}
public List<MyDataClassInfo> MyDataClassInfo
{
get;
set;
}
}
[Serializable]
public class MyDataClassInfo
{
public string elem1;
public string elem2;
public string Elem1
{
get { return elem1; }
set { elem1 = value; }
}
public string Elem2
{
get { return elem2; }
set { elem2 = value; }
}
....