У меня есть класс с универсальной коллекцией в качестве свойства, которое я сериализирую с 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.Я пытался создать свой собственный производный класс из коллекции.Я пытался использовать комбинации атрибутов DataContract, KnownType, ServiceKnownType и CollectionDataContract, но я либо использую их неправильно, либо у меня возникла другая проблема.
Так есть ли способ добавить коллекции в мою коллекцию в первомНапример, применяя атрибут или используя производный класс?Или есть ли способ сделать это вообще?