예제 #1
0
        public static IPostService CreatePostService(Container parentContainer, Container configurationContainer)
        {
            var container = new Container();

            var config = configurationContainer.GetInstance <INewsFeedConfiguration>();

            ICacheService <PostId, Post> postCache = CacheServiceBuilder <PostId, Post> .CreateService(config.PostInvalidationTime,
                                                                                                       CacheItemPriority.NotRemovable);

            ICacheService <string, IEnumerable <PostSummary> > postSummaryCache =
                CacheServiceBuilder <string, IEnumerable <PostSummary> > .CreateService(config.SummariesInvalidationTime,
                                                                                        CacheItemPriority.Default);

            container.RegisterInstance(SourceProvider.GetPostSource(parentContainer));

            container.Register <IPostService, PostServiceCache>();

            container.RegisterInstance(postCache);

            container.RegisterInstance(postSummaryCache);

            container.Verify();

            return(container.GetInstance <IPostService>());
        }