public GetDataUsingDataContractRequest(Addition.CompositeType composite) { this.composite = composite; }
} //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
public GetDataUsingDataContractResponse(Addition.CompositeType GetDataUsingDataContractResult) { this.GetDataUsingDataContractResult = GetDataUsingDataContractResult; }