我有一个泛型集合作为我与WCF序列化属性的类:什么属性用于序列化WCF中的集合?
[ServiceContract]
public interface IService1
{
[OperationContract]
TestObject Load();
}
[DataContract]
public class TestObject
{
[DataMember]
public Collection<object> Properties = new Collection<object>();
}
它正常工作,直到我添加另一个集合作为集合中的(一个项目由“坏线”表示评论)
public class Service1 : IService1
{
public TestObject Load()
{
var obj = new TestObject();
// bad line
obj.Properties.Add(new Collection<object>());
return obj;
}
}
在这我得到异常:
System.ServiceModel.CommunicationException:远程服务器返回错误:NOTFOUND。
如果我删除的TestObject类,只是返回一个集合,然后添加其他集合进行收集奇怪的是正常工作:
[ServiceContract]
public interface IService1
{
[OperationContract]
Collection<object> Load();
}
public class Service1 : IService1
{
public Collection<object> Load()
{
Collection<object> coll = new Collection<object>();
coll.Add(DateTime.Now);
coll.Add(new Collection<object>() { DateTime.Now, new Collection<object>() });
coll.Add("sdf");
coll.Add(99);
return coll;
}
}
我试着与列表或一个ArrayList更换集合。我已经尝试从Collection创建我自己的派生类。我试过使用DataContract,KnownType,ServiceKnownType和CollectionDataContract属性的组合,但我要么不正确地使用它们,要么我有另一个问题。
那么有没有办法在第一个示例中通过应用属性或使用派生类将集合添加到我的集合中?或者有什么办法可以做到这一点?
不记得我之前做了什么;只是从集合创建了一个派生类,并在派生类中添加了'Serializable'属性,不确定是否有成员,但可能也需要。 – eSPiYa 2011-03-04 05:28:49