'No parameterless constructor found for [type]'
在过去的几个小时里,我一直在与异常作斗争。现在我创建了一个简单的单元测试,它应该反映我在应用程序中得到的内容,并且似乎在我不这样做时会抛出这个异常stream.Position = 0
。
另外,当对象只是一个标准类(不是从抽象类派生的)时,在任何情况下我都不会得到这个异常。
请看下面的代码:
按原样运行它 - 它会中断说找不到 Base 的构造函数
取消注释 stream.Position = 0 就可以了
再次注释该行,将 Derived 类更改为不继承自 Base 并取消注释该类中唯一的属性,运行它 - 它不会中断(但显然 Name 将为空)
有人可以解释为什么会这样吗?为什么#1 抛出(或者为什么#3 没有)以及为什么这个消息?
[Test]
public void CanSerialize_Derived()
{
var derived = new Derived() {Name = "ngf"};
var stream = new MemoryStream();
Serializer.Serialize(stream, derived);
//stream.Position = 0;
var deserializedInstance = Serializer.Deserialize<Derived>(stream);
}
[ProtoContract]
[ProtoInclude(9, typeof(Derived))]
public abstract class Base
{
[ProtoMember(1)]
public string Name { get; set; }
}
[ProtoContract]
public class Derived : Base
{
//[ProtoMember(1)]
//public string Name { get; set; }
}