0

我有一个测试类,我正在使用它来创建 WCF 服务,该类如下所示:

public class TestObject
{

    public int ObjID { get; set; }


    public string ObjName { get; set; }

    public TestObject(int id, string name) {
        ObjID = id;
        ObjName = name;
    }
}

当我尝试将服务引用导入客户端应用程序时,我收到此错误There was an error downloading [...]。如果我在我的类中添加[DataContract][DataMember]标签,它工作得很好,但是,我想在不添加 DataContract 的情况下使用它。

关于解决这个问题的任何想法?

4

3 回答 3

1

[DataContract]可以在不指定or属性的情况下使用 wcf 对象[DataMember],但为了使其工作,您还需要包含一个空的构造函数。此构造函数不必像下面的示例那样是公共的,但您必须拥有一个(公共、私有、内部等)

public class TestObject
{
    public int ObjID { get; set; }
    public string ObjName { get; set; }

    public TestObject() 
    { 
    }

    public TestObject(int id, string name) 
    {
        ObjID = id;
        ObjName = name;
    }
}
于 2013-11-06T14:07:18.587 回答
0

您可以通过添加 [DataContract] 和 [DataMember] 来解决此问题。WCF 需要这些标签来序列化您的数据对象。没有它们,对象或字段将不会被序列化或包含在合同中。

于 2013-11-06T14:03:15.690 回答
0
[Serializable]

尝试在类上使用该属性 .. 作为第一次尝试。

看:

http://msdn.microsoft.com/en-us/library/ms733127.aspx

这是我正在寻找的文章(或我记得的文章)

http://www.biztalkgurus.com/biztalk_server/biztalk_blogs/b/biztalksyn/archive/2008/05/13/datacontracts-without-attributes-poco-support-in-net-3-5-sp1.aspx

框架 3.5 SP1 发生了变化。

所以,答案是“是的,你可以”..“但这取决于框架版本”,它取决于序列化(DataContractSerializer)。

于 2013-11-06T14:03:17.397 回答