public SubItemFieldWriterTests() { var artistsStem = new ArtistsStem(); artistsStem.SetParent(new TestStartAxis()); var tools = new SubWriterTools <Album, Artist, Artist>(a => a.Artist, null, null); _writer = new SubItemFieldWriter <Album, Artist>(tools, new StemsEngineSubContext <Artist>(artistsStem)); }
public SubCollectionFieldWriterTests() { var subStem = new ArtistAlbumsStem(); subStem.SetParent(new TestStartAxis()); StemsEngineSubContext <Album> stemsEngineSubContext = new StemsEngineSubContext <Album>(subStem); var tools = new SubWriterTools <Artist, IEnumerable <Album>, Album>(a => a.Albums, null, null); NameFieldWriter = new SubCollectionFieldWriter <Artist, IEnumerable <Album>, Album>(tools, stemsEngineSubContext); }
public IFieldWriter <TItem> Get(Stem <TItem> stem) { var substemCreator = new SubstemEngineSubContextCreator <TItem, TNav, TSubstem>(stem); StemDataChangeEvents <TNav> stemEvents = substemCreator.GetDataChangeEvents(); StemsEngineSubContext <TNav> subContext = substemCreator.GetEngineContext(); MethodSetter <TItem, TNav> setter = MethodSetter <TItem, TNav> .FromDefinition(_definition, stem); var tools = new SubWriterTools <TItem, TNav, TNav>(_navigationExpression, stemEvents, setter); return(new SubItemFieldWriter <TItem, TNav>(tools, subContext)); }
public IApiItemBuilder <TNavItem> IsItem <TNavItem>() where TNavItem : class, TField, new() { var itemModel = new ApiItemModel <TNavItem>(null); // can be null because GetRootCollection never called for navigation properties IEngineSubContext <TNavItem> subContext = new FluentEngineSubContext <TNavItem>(itemModel); var castedExpression = _expression as Expression <Func <TItem, TNavItem> >; // should cast fine due to generic constraint var navTools = new SubWriterTools <TItem, TNavItem, TNavItem>(castedExpression, itemModel.Events, _setter); _fieldModel.Reader = new SubItemFieldReader <TItem, TNavItem>(castedExpression, subContext); _fieldModel.Collator = new NotSupportedFieldCollator <TItem>("sub items"); _fieldModel.ResourceGetter = new SubItemResourceGetter <TItem, TNavItem>(navTools, subContext); _fieldModel.Writer = new SubItemFieldWriter <TItem, TNavItem>(navTools, subContext); var itemBuilder = new EngineItemBuilder <TNavItem>(itemModel); return(itemBuilder); }
public SubItemFieldWriter(SubWriterTools <TItem, TNav, TNav> navTools, IEngineSubContext <TNav> subContext) { _navTools = navTools; _subContext = subContext; }
public SubItemResourceGetter(SubWriterTools <TItem, TNav, TNav> navTools, IEngineSubContext <TNav> engineSubContext) { _navTools = navTools; _engineSubContext = engineSubContext; }
public SubCollectionResourceGetter(SubWriterTools <TItem, TCollection, TNav> navTools, IEngineSubContext <TNav> subContext) { _navTools = navTools; _subContext = subContext; }