【发布时间】:2016-07-12 21:31:29
【问题描述】:
为了使用 WCF SOAP 服务,我使用的是 VS2015 中的“添加服务引用”工具。
问题是当以这种方式添加服务引用时,基类的成员不会暴露在派生类中。
这是我的类型的界面:
[ServiceKnownType(typeof(DbEntry))]
public interface ILogEntry
{
[DataMember]
Int64 Id { get; set; }
[DataMember]
String Error { get; set; }
[DataMember]
String CustomMessage { get; set; }
[DataMember]
Int32 ApplicationId { get; set; }
Int32 ServiceId { get; set; }
[DataMember]
Guid ApplicationGuid { get; set; }
[DataMember]
String ApplicationName { get; set; }
...etc.
这里是实现接口的基类:
[DataContract]
[KnownType(typeof(DbEntry))]
public abstract class LogEntry : ILogEntry
{
private Int64 _Id;
[DataMember]
public Int64 Id
{
get { return _Id; }
set { _Id = value; }
}
private String _Error;
[DataMember]
public String Error
{
get { return _Error; }
set { _Error = value; }
}
private String _CustomMessage;
[DataMember]
public String CustomMessage
{
get { return _CustomMessage; }
set { _CustomMessage = value; }
}
private Int32 _ApplicationId;
[DataMember]
public Int32 ApplicationId
{
get { return _ApplicationId; }
set { _ApplicationId = value; }
}
private Int32 _ServiceId;
public Int32 ServiceId
{
get { return _ServiceId; }
set { _ServiceId = value; }
}
private Guid _ApplicationGuid;
[DataMember]
public Guid ApplicationGuid
{
get { return _ApplicationGuid; }
set { _ApplicationGuid = value; }
}
...etc
这是我的派生类:
[DataContract]
public class DbEntry : LogEntry
{
private String _Message;
[DataMember]
public String Message
{
get { return _Message; }
set { _Message = value; }
}
}
在客户端中,在 DbEntry 类中公开的唯一数据成员是 Message。当我使用通过直接访问 WSDL 生成的 CS 文件时,一切正常。
谁能告诉我为什么当我使用“添加服务引用”工具时基类成员没有暴露在 DbEntry 派生类中?
【问题讨论】:
标签: c# .net web-services wcf soap