WCF SOAPサービスを使用するには、VS2015で「サービス参照の追加」ツールを使用しています。この方法は、基本クラスのメンバーは、派生クラスで公開されていないサービスへの参照を追加するときWCFサービス参照で公開されていない基本クラスメンバ
問題があります。ここで
は私のタイプのための私のインターフェイスである:
[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クラスで公開されている唯一のdatamemberはMessageです。 WSDLに直接アクセスして生成されたCSファイルを使用すると、すべてがうまくいきます。
「サービス参照の追加」ツールを使用すると、基本クラスメンバーがDbEntry派生クラスで公開されない理由を教えていただけますか?