Пример #1
0
        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();
            }
        }
Пример #2
0
 public FakeExternalPostMedia FillValuesAfterDeserialize(IModuleProvider modules)
 {
     Size = new SizeOfInt32()
     {
         Height = Height,
         Width  = Width
     };
     MediaLink     = modules.DeserializeLink(MediaLinkJson);
     MediaLinkJson = null;
     return(this);
 }