Возникла проблема при использовании LazyGetPropertyAsync для бизнес-объекта, поэтому я привел несколько примеров кода, чтобы показать базовую структуру этой проблемы. Как только я вызываю BeginEdit (после выборки), я получаю следующее исключение SerializationException.
System.Runtime.Serialization.SerializationException: 'Тип' Csla.PropertyInfo`1 [[MyApp.ChildList, MyApp, Version = 1.0.0.0, Culture = нейтральный, PublicKeyToken = null]] 'в сборке' Csla, Version = 4.6.603.0 , Culture = нейтральный, PublicKeyToken = 93be5fdc093e4c30 'не помечен как сериализуемый'.
Этого не произойдет, если я заменю LazyGetPropertyAsync на LazyGetProperty, а затем использую метод syncronhous вместо async. Я также пробовал использовать LazyGetPropertyAsync ‹ChildList>, но все равно получаю исключение.
Что я здесь делаю не так?
[Serializable]
public class MyObject : BusinessBase<MyObject>
{
//readonly backing field here
public ChildList Child
{
get
{
return LazyGetPropertyAsync(ChildProperty, ChildList.FetchAsync());
}
}
}
[Serializable]
public class ChildList : ReadOnlyListBase<ChildList, ChildObject>
{
public static ChildList Fetch()
{
//fetch here
}
public static async Task<ChildList> FetchAsync()
{
//fetch here
}
}
[Serializable]
public class ChildObject : ReadOnlyBase<ChildObject>
{
//some stuff here
}
NonSerializable
. P.S. Да, я знаю, что он старый, но может кому-то помочь. - person arcticwhite   schedule 23.01.2018