如何标志着WCF一个接口作为DataContract [英] how to mark an interface as DataContract in WCF

查看:131
本文介绍了如何标志着WCF一个接口作为DataContract的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

结果
我有只持有数据成员(无功能)两个数据类。一是 CallTask​​ 另外就是 SmsTask 。这两个类有这样一些共同的特性 ID 电话即可。我把这些公共属性在一个单独的接口类,我在我的项目在适当的时候使用这个接口类。结果
现在我添加了一个WCFService到我的项目共享客户端和服务器之间的数据。考虑下面的类设计:结果


i have two data classes which hold only data members(no functions). One is CallTask the other is SmsTask. These two classes have some common properties like ID, Tel. I put these common properties in a seperate interface class and i use this interface class in my project whenever appropriate.
Now i added a WCFService to my project to share data between clients and server. Consider the following class design:

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到在客户服务methots使用这些类似以下;

in this design, i want to host CallTask, SmsTask, and IGsmTask to the clients to use these in service methots like the following;

    [OperationContract]
    public void AddTask(IGsmTask task)
    {

    }

我试图来标记的 [DataContract]关于 IGsmTask ,但它给了我complition错误。心不是没有办法,我可以使用接口作为DataContracts任何methot?或者,我应该如何使用KnownAttributes类型在这个synerio?结果
感谢。

i tried to mark [DataContract] on IGsmTask but it gives me complition error. Isnt there any methot that i can use interfaces as DataContracts? Or how should i use KnownAttributes types in this synerio?
Thanks.

推荐答案

据我所知使用接口作为datacontracts是不可能的。您可以使用一个基类,并添加knowntype在otherhand属性。

As far as I know using interfaces as datacontracts is not possible. You may use a base class and add knowntype attributes on the otherhand.

这篇关于如何标志着WCF一个接口作为DataContract的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆