你能做这个吗?
[DataContract]
public class RegisterEndpointRequest : NotificationRegistrationServiceRequest
{
[DataMember]
public IEndpoint Endpoint { get; set; }
}
注意成员 Endpoint 是一个接口 ( IEndpoint
),而不是一个类。WCF 会允许这样做吗?
我认为你可以(但我还没有测试过),但是你需要声明该接口的所有实现[KnownType]
:
[DataContract]
[KnownType(typeof(EndpointImplA))]
[KnownType(typeof(EndpointImplB))]
public class RegisterEndpointRequest : NotificationRegistrationServiceRequest
{
[DataMember]
public IEndpoint Endpoint { get; set; }
}
每个实现类都必须有一个[DataContract]
属性。
是的,当然您可以在 DataContract 中将接口作为 DataMember。然后您必须在 KnownType 属性中指定所有接口实现...
[DataContract]
[KnownType(typeof(ActivityDC))]
[KnownType(typeof(StepDC))]
[KnownType(typeof(WaveDC))]
public class CampaignDC : AuditedEntityBaseDC
{
[DataMember]
public IList<IActivityDC> Activities { get; set; }