[英]WCF loses inherited property values
我有一个WCF服务方法:
public EntityBase GetEntityById(string entityName, object entityId)
我有两个基类:
public abstract class EntityBase
{
public virtual object Id { get; set; }
}
public abstract class VersionableEntityBase : EntityBase
{
public virtual int Version { get; protected set; }
}
我从EntityBase继承的所有实体在启动时都作为KnownTypes添加到服务中,还包括VersionableEntityBase实体。
现在我创建一个对象
public class MyEntity : EntityBase
{
}
并使用GetEntityById调用服务,在客户端中接收到继承的Id。
但是,如果我创建以下内容:
public class MyVersionableEntity : VersionableEntityBase
{
}
并从GetEntityById()方法返回相同的实体,我的版本字段在客户端收到时变为空。 不知何故,WCF没有看到MyVersionableEntity继承自中间版本的VersionableEntityBase,因此它会跳过Version字段。
不幸的是,我无法更改GetEntityById方法以返回VersionableEntityBase,因为并非每个实体都需要Versioning功能。
如何告诉WCF序列化器从GetEntityById方法返回的实体也是VersionableEntityBase类型而不仅仅是EntityBase?
从Version.set
删除protected
修饰符。 WCF序列化程序无法访问它。
public abstract class VersionableEntityBase : EntityBase
{
public virtual int Version { get; set; }
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.