繁体   English   中英

WCF丢失继承的属性值

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM