我有两个数据类,它们只包含一些数据成员(没有函数)。一个是CallTask,另一个是SmsTask。这两个类有一些共同的属性,如ID和Tel。我将这些公共属性放在一个单独的接口类中,并在项目中适当的时候使用该接口类。
现在,我添加了一个WCF服务到我的项目中,以便在客户端和服务器之间共享数据。考虑以下类设计:
public interface IGsmTask : IComparable
{
string TaskID { get; set; }
string SessionID { get; set; }
string Tel { get; set; }
}
class CallTask : IGsmTask
{
#region IGsmTask Members
public string TaskID { get; set; }
public string SessionID { get; set; }
public string Tel { get; set; }
#endregion
}
class SmsTask : IGsmTask
{
#region IGsmTask Members
public string TaskID { get; set; }
public string SessionID { get; set; }
public string Tel { get; set; }
#endregion
public string SmsText { get; set; }
}
在这个设计中,我希望将CallTask、SmsTask和IGsmTask托管给客户端,在服务方法中使用它们,如下所示: [OperationContract]
public void AddTask(IGsmTask task)
{
}
我尝试在IGsmTask上标记[DataContract],但它给我带来了编译错误。是否有一种方法可以将接口用作DataContract?或者在这种情况下应该如何使用KnownAttributes类型?
谢谢。