CSLA SerializationException в BeginEdit при использовании LazyGetPropertyAsync
Возникла проблема при использовании LazyGetPropertyAsync для бизнес-объекта, я поместил несколько примеров кода, чтобы показать базовую структуру этой проблемы. Как только я вызываю BeginEdit (после выборки), я получаю следующее исключение SerializationException.
System.Runtime.Serialization.SerializationException: 'Type' 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 вместо асинхронного. Я также пытался использовать LazyGetPropertyAsync
Что я здесь не так делаю?
[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
}
1 ответ
Я подозреваю, что это ошибка в платформе Csla, которая хранит Task<T>
в FieldManager, а не результат ожидания этого Task<T>
,