Inheritance 如何从WCF中未标记DataContractAttribute或SerializableAttribute的类继承?
在WCF中,如何从未标记为DataContractAttribute或SerializableAttribute的类继承并将其用作datacontract 例如:我有一个名为“EmailAttachment”的自定义类,它是从System.Net.Mail.Attachment继承的:Inheritance 如何从WCF中未标记DataContractAttribute或SerializableAttribute的类继承?,inheritance,serialization,wcf,datacontract,Inheritance,Serialization,Wcf,Datacontract,在WCF中,如何从未标记为DataContractAttribute或SerializableAttribute的类继承并将其用作datacontract 例如:我有一个名为“EmailAttachment”的自定义类,它是从System.Net.Mail.Attachment继承的: [DataContract] public class EmailAttachment : Attachment { [DataMember] public string AttachmentURL
[DataContract]
public class EmailAttachment : Attachment
{
[DataMember]
public string AttachmentURL
{
set;
get;
}
[DataMember]
public string DisplayName
{
set;
get;
}
}
但当我发布服务时,它会抛出一个运行时错误,表示:
System.Runtime.Serialization.InvalidDataContractException:类型“EmailAttachment”无法从未标记为DataContractAttribute或SerializableAttribute的类型继承
解决方法是什么?这取决于您希望数据契约的外观。您不能使用包装器而不是派生类吗?比如:
[DataContract]
public class EmailAttachment
{
public EmailAttachment(){}
internal EmailAttachment(Attachment inner) {_attachment = inner;}
[DataMember]
public string AttachmentURL
{
set;
get;
}
[DataMember]
public string DisplayName
{
set;
get;
}
private Attachment _attachment;
}
如果要在数据协定中公开内部System.Mail.Attachment中的任何状态,则应添加DataMember属性以显示该状态