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>,

Другие вопросы по тегам