/// <summary> /// Initializes a new instance of the <see cref="ODataSerializerContext"/> class. /// </summary> /// <param name="resource">The resource whose navigation property is being expanded.</param> /// <param name="selectExpandClause">The <see cref="SelectExpandClause"/> for the navigation property being expanded.</param> /// <param name="edmProperty">The complex property being nested or the navigation property being expanded. /// If the resource property is the dynamic complex, the resource property is null. /// </param> /// <remarks>This constructor is used to construct the serializer context for writing nested and expanded properties.</remarks> public ODataSerializerContext(ResourceContext resource, SelectExpandClause selectExpandClause, IEdmProperty edmProperty) { if (resource == null) { throw Error.ArgumentNull("resource"); } ODataSerializerContext context = resource.SerializerContext; Request = context.Request; RequestContext = context.RequestContext; Url = context.Url; Model = context.Model; Path = context.Path; RootElementName = context.RootElementName; SkipExpensiveAvailabilityChecks = context.SkipExpensiveAvailabilityChecks; MetadataLevel = context.MetadataLevel; Items = context.Items; ExpandedResource = resource; // parent resource SelectExpandClause = selectExpandClause; EdmProperty = edmProperty; // should be nested property if (context.NavigationSource != null) { IEdmNavigationProperty navigationProperty = edmProperty as IEdmNavigationProperty; if (navigationProperty != null) { NavigationSource = context.NavigationSource.FindNavigationTarget(NavigationProperty); } } }
/// <summary> /// Initializes a new instance of the <see cref="ODataSerializerContext"/> class. /// </summary> /// <param name="resource">The resource whose navigation property is being expanded.</param> /// <param name="selectExpandClause">The <see cref="SelectExpandClause"/> for the navigation property being expanded.</param> /// <param name="edmProperty">The complex property being nested or the navigation property being expanded. /// If the resource property is the dynamic complex, the resource property is null. /// </param> /// <remarks>This constructor is used to construct the serializer context for writing nested and expanded properties.</remarks> public ODataSerializerContext(ResourceContext resource, SelectExpandClause selectExpandClause, IEdmProperty edmProperty) { if (resource == null) { throw Error.ArgumentNull("resource"); } // Clone the resource's context. Use a helper function so it can // handle platform-specific differences in ODataSerializerContext. ODataSerializerContext context = resource.SerializerContext; this.CopyPlatformSpecificProperties(context); Model = context.Model; Path = context.Path; RootElementName = context.RootElementName; SkipExpensiveAvailabilityChecks = context.SkipExpensiveAvailabilityChecks; MetadataLevel = context.MetadataLevel; Items = context.Items; ExpandedResource = resource; // parent resource SelectExpandClause = selectExpandClause; EdmProperty = edmProperty; // should be nested property if (context.NavigationSource != null) { IEdmNavigationProperty navigationProperty = edmProperty as IEdmNavigationProperty; if (navigationProperty != null) { NavigationSource = context.NavigationSource.FindNavigationTarget(NavigationProperty); } } }