【发布时间】:2010-05-04 14:34:29
【问题描述】:
我有一个报告服务,它实现了许多报告。每个报告都需要某些参数。逻辑相关的参数组被放置在一个接口中,然后报表实现该接口:
[ServiceContract]
[ServiceKnownType(typeof(ExampleReport))]
public interface IService1
{
[OperationContract]
void Process(IReport report);
}
public interface IReport
{
string PrintedBy { get; set; }
}
public interface IApplicableDateRangeParameter
{
DateTime StartDate { get; set; }
DateTime EndDate { get; set; }
}
[DataContract]
public abstract class Report : IReport
{
[DataMember]
public string PrintedBy { get; set; }
}
[DataContract]
public class ExampleReport : Report, IApplicableDateRangeParameter
{
[DataMember]
public DateTime StartDate { get; set; }
[DataMember]
public DateTime EndDate { get; set; }
}
问题是 WCF DataContractSerializer 没有在我的客户端库中公开这些接口,因此我无法编写我计划的通用报告生成前端。 WCF 可以公开这些接口,还是序列化程序的限制?如果是后一种情况,那么这种 OO 模式的规范方法是什么?
我研究了 NetDataContractSerializer,但它似乎不是官方支持的实现(这意味着它不是我的项目中的一个选项)。目前,我已经放弃将接口包含在服务和客户端应用程序之间通用的库中,但这对我来说似乎是不必要的额外依赖。当然有更直接的方法可以做到这一点?我的印象是 WCF 应该取代 .NET 远程处理。检查对象是否实现接口似乎是远程接口所需的最基本功能之一?
【问题讨论】:
标签: wcf serialization remoting interface implementation