.net 为什么下面的protobuf网络使用是非法的?
在大约2分钟前,它是非法的,因为已知类型在接口上不受支持.net 为什么下面的protobuf网络使用是非法的?,.net,protobuf-net,.net,Protobuf Net,在大约2分钟前,它是非法的,因为已知类型在接口上不受支持 现在,这种用法是非法的,因为它没有setter,所以不能安全地序列化IYObject.X。但是,只要我们将自己限制在可以合理序列化的接口成员或具体类型的成员,就可以提交。使用属性或类型模型。(通过代码或下一次公共投放)。在大约2分钟前,它是非法的,因为已知类型在接口上不受支持 现在,这种用法是非法的,因为它没有setter,所以不能安全地序列化IYObject.X。但是,只要我们将自己限制在可以合理序列化的接口成员或具体类型的成员,就可以
现在,这种用法是非法的,因为它没有setter,所以不能安全地序列化
IYObject.X
。但是,只要我们将自己限制在可以合理序列化的接口成员或具体类型的成员,就可以提交。使用属性或类型模型。(通过代码或下一次公共投放)。在大约2分钟前,它是非法的,因为已知类型在接口上不受支持
现在,这种用法是非法的,因为它没有setter,所以不能安全地序列化
IYObject.X
。但是,只要我们将自己限制在可以合理序列化的接口成员或具体类型的成员,就可以提交。使用属性或类型模型。(通过代码或下一个公共放置)。“子类型只能添加到非密封类”-它不是类,因此肯定不是非密封类。我将根据您(和现有)的要求提出此限制。但首先。。。。睡吧,你真的在给我锻炼;p我对此表示赞赏——你迫使我在人们自v1以来一直要求的领域添加了大量的修饰语。新的v2类型模型的全部要点是使这种灵活性成为可能(无论你的帖子有多少),到目前为止,我很高兴新模型中存在所需的多功能性(也就是说,没有什么能阻止展示)。“子类型只能添加到非密封类”-它不是一个类,所以它肯定不是一个非密封类。我将根据您(和现有)的要求提出此限制。但首先。。。。睡吧,你真的在给我锻炼;p我对此表示赞赏——你迫使我在人们自v1以来一直要求的领域添加了大量的修饰语。新的v2型号的全部要点是使这种灵活性成为可能(无论你的帖子有多少),到目前为止,我很高兴新型号具备了所需的多功能性(也就是说,没有什么能阻止展示).RuntimeTypeModel.Add方法中布尔参数的含义是什么?@Mark是应用内置模式,还是只添加类型而不添加其他配置。
-或者简而言之(我将澄清文档)-如果为false,没有处理属性-您必须完全手动配置类型RuntimeTypeModel中布尔参数的含义是什么。添加方法?@Mark是应用内置模式,还是只添加类型而不进行其他配置。
-简而言之(我将澄清文档)-如果为false,未处理任何属性-必须完全手动配置类型
public interface IYObject
{
string X { get; }
}
public class YObject : IYObject
{
public string X { get; set; }
}
public class D
{
public IYObject Y { get; set; }
}
class Program
{
static void Main()
{
var m = RuntimeTypeModel.Default;
m.Add(typeof(D), true).Add("Y");
m.Add(typeof(IYObject), false).AddSubType(1, typeof(YObject)).Add("X");
var d = new D { Y = new YObject { X = "a" } };
using (var ms = new MemoryStream())
{
Serializer.Serialize(ms, d);
ms.Position = 0;
var d2 = Serializer.Deserialize<D>(ms);
Debug.Assert(d.Y.X == d2.Y.X);
}
}
}
System.InvalidOperationException occurred
Message=Sub-types can only be adedd to non-sealed classes
Source=protobuf-net
StackTrace:
at ProtoBuf.Meta.MetaType.AddSubType(Int32 fieldNumber, Type derivedType)
InnerException: