Exemplo n.º 1
0
        private IServiceMap AddServiceMap(XName qualifiedName)
        {
            var operationDefinition = GetOperationDefinition(contractAssembly, qualifiedName);

            if (operationDefinition == null || qualifiedName.NamespaceName != operationDefinition.Name.NamespaceName)
            {
                throw XRoadException.UnknownOperation(qualifiedName);
            }

            var requestValueDefinition = schemaDefinitionProvider.GetRequestValueDefinition(operationDefinition);
            var inputTypeMap           = GetContentDefinitionTypeMap(requestValueDefinition, null);

            var outputTuple             = GetReturnValueTypeMap(operationDefinition);
            var responseValueDefinition = outputTuple.Item1;
            var outputTypeMap           = outputTuple.Item2;

            var serviceMap = (IServiceMap)Activator.CreateInstance(
                operationDefinition.ServiceMapType,
                this,
                operationDefinition,
                requestValueDefinition,
                responseValueDefinition,
                inputTypeMap,
                outputTypeMap
                );

            return(serviceMaps.GetOrAdd(qualifiedName, serviceMap));
        }