У меня проблема с переносом моего объекта из WCF в SL3.
interface IComposite {
ICollection<Child_A> Children{ get; set; }
}
[DataContract]
[knownType(typeof(ChildCollection))]
[knownType(typeof(ICollection<Child_A>))]
class Composite : IComposite {
ChildCollection c = null;
[DataMember]
public string Name { get;set;}
[DataMember]
public ICollection<Child_A> Children { get {
return c??(c=new ChildCollection());
} set;}
}
[CollectionDataContract]
class ChildCollection : List<Child_A> {
}
[DataContract]
class Child_A {
[DataMember]
string Name { get;set; }
}
[OperationContract]
Composite GetData(){
var data = new Composite();
data.Children.Add( new Child_A() { Name = "child_a_1" } );
return data;
}
Когда я вызываю сервис из SL3, я получаю объект Composite
, но в списке нет ни одного элемента.Есть другие коллекции в Composite
.Когда я устанавливаю [DataMember(Order=0/1)]
, я получаю ошибку nullreference error на клиенте.И если я удаляю его, я получаю ошибку Not Found.Я пробовал KnowType
и ServiceKnownType
, но не получилось.Я проверил svcTrace, он просто говорит Ошибка сериализации.Где я делаю не так.
SVC TRACE Сообщение InnerException было 'Type' xxxCoverageEntity 'с именем контракта данных' xxxCoverageEntity: http://schemas.datacontract.org/2004/07/xxxBusinessEntities' не ожидается.Добавьте любые типы, которые не известны статически, в список известных типов
Здесь xxxCoverageEntity - это Child_A в образце