diff options
Diffstat (limited to 'src/System.Web.Http.OData/OData/ODataActionParameters.cs')
-rw-r--r-- | src/System.Web.Http.OData/OData/ODataActionParameters.cs | 38 |
1 files changed, 38 insertions, 0 deletions
diff --git a/src/System.Web.Http.OData/OData/ODataActionParameters.cs b/src/System.Web.Http.OData/OData/ODataActionParameters.cs new file mode 100644 index 00000000..e125ce9a --- /dev/null +++ b/src/System.Web.Http.OData/OData/ODataActionParameters.cs @@ -0,0 +1,38 @@ +// Copyright (c) Microsoft Open Technologies, Inc. All rights reserved. See License.txt in the project root for license information. + +using System.Collections.Generic; +using System.Diagnostics.CodeAnalysis; +using System.Diagnostics.Contracts; +using System.Net.Http; +using System.Web.Http.OData.Formatter; +using System.Web.Http.OData.Formatter.Deserialization; +using System.Web.Http.OData.Properties; +using Microsoft.Data.Edm; + +namespace System.Web.Http.OData +{ + /// <summary> + /// ActionPayload holds the Parameter names and values provided by a client in a POST request + /// to invoke a particular Action. The Parameter values are stored in the dictionary keyed using the Parameter name. + /// </summary> + [ODataParameterBinding] + [SuppressMessage("Microsoft.Naming", "CA1710:IdentifiersShouldHaveCorrectSuffix", Justification = "Pending, will remove once class has appropriate base type.")] + [SuppressMessage("Microsoft.Usage", "CA2237:MarkISerializableTypesWithSerializable", Justification = "Pending, will remove once class has appropriate base type.")] + public class ODataActionParameters : Dictionary<string, object> + { + /// <summary> + /// Gets the IEdmFunctionImport that describes the payload. + /// </summary> + public virtual IEdmFunctionImport GetFunctionImport(ODataDeserializerContext context) + { + HttpConfiguration configuration = context.Request.GetConfiguration(); + if (configuration == null) + { + throw Error.InvalidOperation(SRResources.RequestMustContainConfiguration); + } + IODataActionResolver resolver = configuration.GetODataActionResolver(); + Contract.Assert(resolver != null); + return resolver.Resolve(context); + } + } +}
\ No newline at end of file |