internal static IEdmOperation[] CalculateBindableOperationsForType(IEdmType bindingType, IEdmModel model, EdmTypeResolver edmTypeResolver) { Debug.Assert(model != null, "model != null"); Debug.Assert(edmTypeResolver != null, "edmTypeResolver != null"); List <IEdmOperation> operations = null; try { operations = model.FindBoundOperations(bindingType).ToList(); } catch (Exception exc) { if (!ExceptionUtils.IsCatchableExceptionType(exc)) { throw; } throw new ODataException(Strings.MetadataUtils_CalculateBindableOperationsForType(bindingType.FullTypeName()), exc); } List <IEdmOperation> operationsFound = new List <IEdmOperation>(); foreach (IEdmOperation operation in operations.EnsureOperationsBoundWithBindingParameter()) { IEdmOperationParameter bindingParameter = operation.Parameters.FirstOrDefault(); IEdmType resolvedBindingType = edmTypeResolver.GetParameterType(bindingParameter).Definition; if (resolvedBindingType.IsAssignableFrom(bindingType)) { operationsFound.Add(operation); } } return(operationsFound.ToArray()); }
internal static IEdmOperation[] CalculateBindableOperationsForType(IEdmType bindingType, IEdmModel model, EdmTypeResolver edmTypeResolver) { Debug.Assert(model != null, "model != null"); Debug.Assert(edmTypeResolver != null, "edmTypeResolver != null"); List<IEdmOperation> operations = null; try { operations = model.FindBoundOperations(bindingType).ToList(); } catch (Exception exc) { if (!ExceptionUtils.IsCatchableExceptionType(exc)) { throw; } throw new ODataException(Strings.MetadataUtils_CalculateBindableOperationsForType(bindingType.FullTypeName()), exc); } List<IEdmOperation> operationsFound = new List<IEdmOperation>(); foreach (IEdmOperation operation in operations.EnsureOperationsBoundWithBindingParameter()) { IEdmOperationParameter bindingParameter = operation.Parameters.FirstOrDefault(); IEdmType resolvedBindingType = edmTypeResolver.GetParameterType(bindingParameter).Definition; if (resolvedBindingType.IsAssignableFrom(bindingType)) { operationsFound.Add(operation); } } return operationsFound.ToArray(); }