/// <summary> /// Constructs an instance of <see cref="ODataFeedAndEntryTypeContext"/>. /// </summary> /// <param name="navigationSource">The navigation source of the feed or entry.</param> /// <param name="navigationSourceEntityType">The entity type of the navigation source.</param> /// <param name="expectedEntityType">The expected entity type of the feed or entry.</param> /// <param name="model">The Edm model instance to use.</param> internal ODataFeedAndEntryTypeContextWithModel(IEdmNavigationSource navigationSource, IEdmEntityType navigationSourceEntityType, IEdmEntityType expectedEntityType, IEdmModel model) : base(/*throwIfMissingTypeInfo*/ false) { Debug.Assert(model != null, "model != null"); Debug.Assert(navigationSource != null, "navigationSource != null"); Debug.Assert(navigationSourceEntityType != null, "navigationSourceEntityType != null"); Debug.Assert(expectedEntityType != null, "expectedEntityType != null"); this.navigationSource = navigationSource; this.navigationSourceEntityType = navigationSourceEntityType; this.expectedEntityType = expectedEntityType; this.model = model; IEdmContainedEntitySet containedEntitySet = navigationSource as IEdmContainedEntitySet; if (containedEntitySet != null) { if (containedEntitySet.NavigationProperty.Type.TypeKind() == EdmTypeKind.Collection) { this.isFromCollection = true; } } this.navigationSourceName = this.navigationSource.Name; this.isMediaLinkEntry = this.expectedEntityType.HasStream; this.lazyUrlConvention = new SimpleLazy <UrlConvention>(() => UrlConvention.ForModel(this.model)); }
/// <summary> /// Constructs an instance of the ODataVersionCache. /// </summary> /// <param name="factory">The method to call to create a new instance of <typeparamref name="T"/> for a given ODataVersion.</param> internal ODataVersionCache(Func <ODataVersion, T> factory) { Debug.Assert(factory != null, "factory != null"); this.v3 = new SimpleLazy <T>(() => factory(ODataVersion.V4), true /*isThreadSafe*/); }