internal void AfterDeserialize(IModuleProvider moduleProvider) { var linkSerialization = moduleProvider.QueryModule <ILinkSerializationService>() ?? throw new ModuleNotFoundException(typeof(ILinkSerializationService)); if (Contracts == null) { throw new SerializationException("MakabaEntityInfoModel: Неправильное содержимое сериализованных данных."); } BoardInfo = moduleProvider.ValidateAfterDeserialize <PostDocument, IPostDocument, PostDocumentExternalContract>(Contracts.BoardInfo); if (Contracts.HasBannerSize) { BannerSize = new SizeOfInt32() { Width = Contracts.BannerWidth, Height = Contracts.BannerHeight }; } else { BannerSize = null; } BannerImageLink = linkSerialization.Deserialize(Contracts.BannerImageLink); BannerBoardLink = linkSerialization.Deserialize(Contracts.BannerBoardLink); Icons = Contracts.Icons?.Select(i => i != null ? new BoardIcon() { Id = i.Id, Name = i.Name, MediaLink = linkSerialization.Deserialize(i.MediaLink) } : null).OfType <IBoardIcon>().ToList(); Pages = Contracts.Pages; NewsItems = Contracts.NewsItems?.Select(i => i != null ? new MakabaBoardPostCollectionInfoNewsItem() { Date = i.Date, Title = i.Title, NewsLink = linkSerialization.Deserialize(i.NewsLink) } : null).OfType <IBoardPostCollectionInfoNewsItem>().ToList(); AdvertisementItems = Contracts.AdvertisementItems?.Select(i => i != null ? new MakabaBoardPostCollectionInfoBoardsAdvertisementItem() { BoardLink = linkSerialization.Deserialize(i.BoardLink), Name = i.Name, Info = i.Info } : null).OfType <IBoardPostCollectionInfoBoardsAdvertisementItem>().ToList(); AdvertisementBannerLink = linkSerialization.Deserialize(Contracts.AdvertisementBannerLink); AdvertisementClickLink = linkSerialization.Deserialize(Contracts.AdvertisementClickLink); Flags = Contracts.Flags; Contracts = null; if (_infoSet == null) { var r = new List <IBoardPostCollectionInfo>() { this }; _infoSet = r.AsReadOnly(); } }
public FakeExternalPostMedia FillValuesAfterDeserialize(IModuleProvider modules) { Size = new SizeOfInt32() { Height = Height, Width = Width }; MediaLink = modules.DeserializeLink(MediaLinkJson); MediaLinkJson = null; return(this); }