Я потратил некоторое время на написание кода для своего приложения, предполагая, что бит сериализации будет самой легкой его частью.Практически обе стороны (клиент и сервер) сделаны, и все, что мне нужно сделать, это передать класс AccountInfo из сервиса клиенту ...
Проблема в том, что AccountInfo наследует List, и поэтому атрибут [DataContract] недопустим,
Я попытался использовать атрибут [CollectionDataContract], но затем класс, полученный на другой стороне (клиенте), содержит только универсальные методы List без моих пользовательских реализованных свойств, таких как GroupTitle ...
Я работалРешение этой проблемы, но я не знаю, как его применить.
В основном все работает, когда я создаю свойство вместо того, чтобы наследовать List, но тогда я не могу связать этот класс с LongListSelector (WP7), потому что это не тип коллекции.
Есть три класса, о которых я говорю.
AccountInfo, который содержит несколько экземпляров:
AccountInfoGroup, который содержит несколько экземпляров:
AccountInfoEntry (этот список не наследует, поэтому нет проблем с сериализацией, и все свойства доступны).
Может ли кто-нибудь помочь мне использовать правильные атрибуты для сериализации и передачи этих классов с использованием метода WCF?
Вот код 2 из этих классов коллекции:
public class AccountInfo : List<AccountInfoGroup>
{
public AccountInfo()
{
UpdateTime = DateTime.UtcNow;
EntryID = Guid.NewGuid();
}
public bool HasItems
{
get
{
return (Count != 0);
}
private set
{
}
}
public Guid EntryID
{
get;
set;
}
public decimal GetTotalCredit()
{
decimal credit = 0;
foreach (AccountInfoGroup acg in this.Where(item => item.Class == AccountInfoEntry.EntryType.Credit))
{
acg.Where(item => item.ItemClass == AccountInfoEntry.EntryType.Credit).ToList().ForEach(entry =>
{ credit += entry.Remaining; }
);
}
return credit;
}
public bool UsedForCreditComparison = false;
public DateTime UpdateTime { get; private set; }
}
public class AccountInfoGroup : List<AccountInfoEntry>
{
public AccountInfoEntry.EntryType Class
{
get;
private set;
}
public string Title
{
get
{
return AccountInfoEntry.ClassToString(Class);
}
}
public AccountInfoGroup(AccountInfoEntry.EntryType groupClass)
{
this.@Class = groupClass;
}
public bool HasItems
{
get
{
return (Count != 0);
}
private set
{
}
}
}
Спасибо за любые предложения ...:)