未找到默认构造函数,且不可序列化
本文关键字:序列化 构造函数 默认 | 更新日期: 2023-09-27 18:07:09
我已经尝试了很多次得到这个编译,我想做的是有一个数组的名称和扩展是可编辑的设计器,但当编辑通过设计器,它抛出错误:
没有找到类型为"Filter"的构造函数。
和on编译:
属性'ExtensionList'的代码生成失败。错误是:'类型'过滤器'在程序集'测试,版本=1.0.0.0,文化=中性,PublicKeyToken=null'未标记为可序列化'
有人能帮忙吗?这是我使用的代码:
System.Collections.Generic.List<Filter> InternalExtensions = new System.Collections.Generic.List<Filter>();
[System.ComponentModel.Description(@"Sets a list of acceptable extensions to view.")]
public System.Collections.Generic.List<Filter> ExtensionList
{
get
{
return InternalExtensions;
}
set
{
InternalExtensions = value;
}
}
[Serializable()]
public class Filter : System.Runtime.Serialization.ISerializable
{
String Name;
String[] Extensions;
public Filter()
{
}
public Filter(System.Runtime.Serialization.SerializationInfo info, System.Runtime.Serialization.StreamingContext context)
{
info.AddValue("FilterName", Name);
info.AddValue("FilterExtensions", Extensions);
}
public void GetObjectData(System.Runtime.Serialization.SerializationInfo info, System.Runtime.Serialization.StreamingContext context)
{
Name = (String)info.GetValue("FilterName", typeof(String));
Extensions = (String[])info.GetValue("FilterExtensions", typeof(String[]));
}
}
我不确定这是否是所有你的问题,但你的ISerializable
的实现是错误的方式。您应该在构造函数中填充对象,并在GetObjectData
:
SerializationInfo
。public Filter(SerializationInfo info, StreamingContext context)
{
Name = (String)info.GetValue("FilterName", typeof(String));
Extensions = (String[])info.GetValue("FilterExtensions", typeof(String[]));
}
public void GetObjectData(SerializationInfo info, StreamingContext context)
{
info.AddValue("FilterName", Name);
info.AddValue("FilterExtensions", Extensions);
}
我没有预料到这会在编译时引起问题。涉及到什么样的代码生成?