所以,我正在处理以下程序集,其中定义了以下内容(相当无害):
public class QueryDefinition
{
private List<QueryFilter> TheCurrentFilters = null;
public List<QueryFilter> CurrentFilters
{
set { TheCurrentFilters = value; }
get { return TheCurrentFilters; }
}
// other code
public class QueryFilter
{
// member variables are: seven public string's & two public int's
public override string ToString()
{
return FilterText;
}
}
}
在另一个程序集中,我们有一个用户控件:
public partial class QueryWizard : UserControl
{
private List<QueryDefinition.QueryFilter> TheCurrentFilters = null;
public List<QueryDefinition.QueryFilter> CurrentFilters
{
set { TheCurrentFilters = value; }
get { return TheCurrentFilters; }
}
// other code
}
代码很有趣,但这是我要处理的。
无论如何,如果我去另一个项目(引用了此UserControl),创建一个Form,然后将控件拖放到Form上,我会得到以下错误:
'System.Runtime.Serialization.SerializationException: Type QueryDefinition+QueryFilter' in Assembly ... is not marked as serializable.'
实际上,我并没有使用任何序列化代码,那么这个QueryFilter列表中的哪个原因导致SerializationException?
为了解决这个问题,我已经使用了[Serializable]标记。但最近我们正在重建项目(Visual WebGUI升级),现在我遇到了“无法加载反序列化所需的类型”的问题。因此,我决定尝试弄清楚为什么我们首先需要序列化标记!谢谢。