コード例 #1
0
ファイル: Serializer.cs プロジェクト: MuraStranger/XRoadLib
        private IServiceMap AddServiceMap(XName qualifiedName)
        {
            var operationDefinition = GetOperationDefinition(contractAssembly, qualifiedName);

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

            var requestDefinition = schemaDefinitionProvider.GetRequestDefinition(operationDefinition);
            var inputTypeMap      = GetParticleDefinitionTypeMap(requestDefinition, null);

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

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

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