我有一个测试类,我正在尝试创建一个WCF服务,该类看起来像这样:
public class TestObject
{
public int ObjID { get; set; }
public string ObjName { get; set; }
public TestObject(int id, string name) {
ObjID = id;
ObjName = name;
}
}
当我尝试将服务引用导入clien应用程序时,出现此错误There was an error downloading [...]
。如果我将[DataContract]
和[DataMember]
标记添加到我的班级,它可以正常使用,但是,我想在不添加DataContract的情况下使用它。
有关解决此问题的任何想法吗?
答案 0 :(得分:1)
可以在不指定[DataContract]
或[DataMember]
属性的情况下使用wcf对象,但为了使其工作,您还需要包含一个空的构造函数。这个构造函数不必像下面的例子那样公开,但你必须有一个(公共,私有,内部等)
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;
}
}
答案 1 :(得分:0)
您可以通过添加[DataContract]和[DataMember]来解决此问题。 WCF需要这些标记来序列化您的数据对象。没有它们,对象或字段将不会被序列化或包含在合同中。
答案 2 :(得分:0)
[Serializable]
尝试该类的属性..作为第一次尝试。
请参阅:
http://msdn.microsoft.com/en-us/library/ms733127.aspx
这是我正在寻找的文章(或者像我记得的文章)
使用Framework 3.5 SP1改变了一切。
所以,答案是“是的你可以”..“但它取决于框架版本”,它取决于Serialize(DataContractSerializer)。