Exemplo n.º 1
0
 public GetDataUsingDataContractRequest(Addition.CompositeType composite)
 {
     this.composite = composite;
 }
Exemplo n.º 2
0
        } //end of read user IP data...

        private void calculateAddition(Uri additionServiceURI, Addition.MathData[] cmplxTyp_ip)
        {
            try
            {
                Uri mexAddress = additionServiceURI;
                MetadataExchangeClientMode mexMode = MetadataExchangeClientMode.HttpGet;
                string contractName   = "IAddition";
                string operationName  = "GetDataUsingDataContract";
                string operationName1 = "AddArray";

                Addition.CompositeType ip = new Addition.CompositeType
                {
                    BoolValue   = true,
                    StringValue = "---test string--"
                };

                object[] operationParameters  = new object[] { ip };
                object[] operationParameters1 = new object[] { cmplxTyp_ip };

                MetadataExchangeClient mexClient = new MetadataExchangeClient(mexAddress, mexMode);
                mexClient.ResolveMetadataReferences = true;
                MetadataSet metaSet = mexClient.GetMetadata();

                WsdlImporter importer = new WsdlImporter(metaSet);
                //BEGIN INSERT
                XsdDataContractImporter xsd = new XsdDataContractImporter();
                xsd.Options = new ImportOptions();
                xsd.Options.ImportXmlType        = true;
                xsd.Options.GenerateSerializable = true;
                //xsd.Options.ReferencedTypes.Add(typeof(KeyValuePair<string, string>));
                //xsd.Options.ReferencedTypes.Add(typeof(System.Collections.Generic.List<KeyValuePair<string, string>>));

                xsd.Options.ReferencedTypes.Add(typeof(Addition.CompositeType));
                xsd.Options.ReferencedTypes.Add(typeof(Addition.MathData));
                xsd.Options.ReferencedTypes.Add(typeof(System.Collections.Generic.List <Addition.MathData>));


                importer.State.Add(typeof(XsdDataContractImporter), xsd);
                //END INSERT


                Collection <ContractDescription> contracts    = importer.ImportAllContracts();
                ServiceEndpointCollection        allEndpoints = importer.ImportAllEndpoints();

                ServiceContractGenerator generator = new ServiceContractGenerator();
                var endpointsForContracts          = new Dictionary <string, IEnumerable <ServiceEndpoint> >();

                foreach (ContractDescription contract in contracts)
                {
                    generator.GenerateServiceContractType(contract);
                    endpointsForContracts[contract.Name] = allEndpoints.Where(
                        se => se.Contract.Name == contract.Name).ToList();
                }

                if (generator.Errors.Count != 0)
                {
                    throw new Exception("There were errors during code compilation.");
                }

                CodeGeneratorOptions options = new CodeGeneratorOptions();
                options.BracingStyle = "C";
                CodeDomProvider codeDomProvider = CodeDomProvider.CreateProvider("C#");

                CompilerParameters compilerParameters = new CompilerParameters(
                    new string[] {
                    "System.dll", "System.ServiceModel.dll",
                    "System.Runtime.Serialization.dll"
                });
                compilerParameters.GenerateInMemory = true;

                CompilerResults results = codeDomProvider.CompileAssemblyFromDom(
                    compilerParameters, generator.TargetCompileUnit);

                if (results.Errors.Count > 0)
                {
                    throw new Exception("There were errors during generated code compilation");
                }
                else
                {
                    Type clientProxyType = results.CompiledAssembly.GetTypes().First(
                        t => t.IsClass &&
                        t.GetInterface(contractName) != null &&
                        t.GetInterface(typeof(ICommunicationObject).Name) != null);

                    ServiceEndpoint se = endpointsForContracts[contractName].First();

                    object instance = results.CompiledAssembly.CreateInstance(
                        clientProxyType.Name,
                        false,
                        System.Reflection.BindingFlags.CreateInstance,
                        null,
                        new object[] { se.Binding, se.Address },
                        CultureInfo.CurrentCulture, null);


                    var methodInfo  = instance.GetType().GetMethod(operationName);
                    var methodInfo1 = instance.GetType().GetMethod(operationName1);

                    object  retVal  = methodInfo.Invoke(instance, BindingFlags.InvokeMethod, null, operationParameters, null);
                    dynamic retVal1 = methodInfo1.Invoke(instance, BindingFlags.InvokeMethod, null, operationParameters1, null);
                    Console.WriteLine(retVal.ToString());

                    for (int x = 0; x < cmplxTyp_ip.Length; x++)
                    {
                        Console.WriteLine(" --addition output RECORD {0 } ----", x);
                        Console.WriteLine(" FArg1+farg2 : {0 } ", retVal1[x].FRsltArg);
                        Console.WriteLine(" strFArg1+arg2 : {0 }", retVal1[x].StrConcatRslt);
                    }
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message);
            } //end of mex binding try block
        }   //end addtion webservice Invoke function
Exemplo n.º 3
0
 public GetDataUsingDataContractResponse(Addition.CompositeType GetDataUsingDataContractResult)
 {
     this.GetDataUsingDataContractResult = GetDataUsingDataContractResult;
 }