C# 我可以公开不是DataContract的类的DataMember吗?
我可以这样做吗:C# 我可以公开不是DataContract的类的DataMember吗?,c#,.net,wcf,datacontract,datamember,C#,.net,Wcf,Datacontract,Datamember,我可以这样做吗: public abstract class DeletableEntity { [DataMember] public bool Delete { get; set; } } [DataContract] public class MyClass : DeletableEntity { [DataMember] public int ID { get; set; } } 我真的只需要DeletableEntity,这样其他人就可以继承它,这样
public abstract class DeletableEntity
{
[DataMember]
public bool Delete { get; set; }
}
[DataContract]
public class MyClass : DeletableEntity
{
[DataMember]
public int ID { get; set; }
}
我真的只需要
DeletableEntity
,这样其他人就可以继承它,这样它就不需要通过WCF,我可以用我的MyClass
发送它的Delete
成员,而不必发送DeletableEntity
?不,这应该是不可能的。根据您的需求,使用接口会更简单。此外,作为一个建议,请考虑使用已知的类型。这实际上与您的问题没有直接关系,但它允许您在wcf上使用“多态性”。
更多详情请访问:
关于DataContractSerializer如何处理序列化,您有两个选项:
[DataContract]
[KnownType("GetKnownTypes")]
public abstract class DeletableEntity
{
[DataMember]
public bool Delete { get; set; }
public static Type[] GetKnownTypes()
{
return (from type in typeof (DeletableEntity).Assembly.GetTypes()
where typeof (DeletableEntity).IsAssignableFrom(type)
select type).ToArray();
}
}