private static object InterceptValue(object graph, IEdmTypeReference expectedType, string elementName, ODataSerializerContext writeContext, object declaringInstance, IEdmTypeReference declaringTypeReference, IEdmType declaringType, Type declaringClrType) { var modelBuilder = EdmModelHelperMethods.Configuration[writeContext.Model]; var assemblyNames = writeContext.Request.HttpContext.RequestServices.GetService <AssembliesResolver>(); var clrType = EdmLibHelpers.GetClrType(expectedType, writeContext.Model, assemblyNames); var serializers = modelBuilder.GetSerializeInterceptors( clrType).ToList(); var isRoot = declaringInstance == null && declaringTypeReference == null && declaringType == null && declaringClrType == null; if (serializers.Any()) { if (declaringClrType == null && declaringTypeReference != null) { declaringClrType = declaringType != null ? EdmLibHelpers.GetClrType(declaringType, writeContext.Model, assemblyNames) : EdmLibHelpers.GetClrType(declaringTypeReference, writeContext.Model, assemblyNames); } var vp = new ValueInterceptor( graph, clrType, elementName, declaringInstance, declaringClrType, isRoot); foreach (var serializer in serializers) { if (!serializer.Process(vp)) { break; } } graph = vp.Value; } return(graph); }
private static object InterceptValue(object graph, IEdmTypeReference expectedType, string elementName, ODataSerializerContext writeContext, object declaringInstance, IEdmTypeReference declaringTypeReference, IEdmType declaringType, Type declaringClrType) { var modelBuilder = EdmModelHelperMethods.Configuration[writeContext.Model]; var assemblyNames = writeContext.Request.HttpContext.RequestServices.GetService<AssembliesResolver>(); var clrType = EdmLibHelpers.GetClrType(expectedType, writeContext.Model, assemblyNames); var serializers = modelBuilder.GetSerializeInterceptors( clrType).ToList(); var isRoot = declaringInstance == null && declaringTypeReference == null && declaringType == null && declaringClrType == null; if (serializers.Any()) { if (declaringClrType == null && declaringTypeReference != null) { declaringClrType = declaringType != null ? EdmLibHelpers.GetClrType(declaringType, writeContext.Model, assemblyNames) : EdmLibHelpers.GetClrType(declaringTypeReference, writeContext.Model, assemblyNames); } var vp = new ValueInterceptor( graph, clrType, elementName, declaringInstance, declaringClrType, isRoot); foreach (var serializer in serializers) { if (!serializer.Process(vp)) { break; } } graph = vp.Value; } return graph; }