Create SOAP clients dynamic by WSDL

守給你的承諾、 提交于 2019-12-13 13:09:00

问题


I'm trying to convert this code, to work at .net core... This code reads a WSDL file, and dynamic generate the assembly (because I have multiple wsdl files). But this code not compile at core... because I don't have for example the CSharpCodeProvider class.

Anyone knows a better way?

private void Teste()
{
    var ass = CriarAssemblie(wsdl);
    dynamic service = Activator.CreateInstance(ass.GetType("Type1"));
}

private Assembly CreateAssembly(Stream wsdlFile)
{
    var serviceDescription = ServiceDescription.Read(wsdlFile);
    StringWriter strWriter = new StringWriter(CultureInfo.CurrentCulture);
    CSharpCodeProvider cProvider = new CSharpCodeProvider();
    cProvider.GenerateCodeFromNamespace(GerarNameSpace(serviceDescription), strWriter, null);

    string codigoClasse = strWriter.ToString();

    CompilerParameters parameters = new CompilerParameters(new string[] { "System.dll", "System.Xml.dll", "System.Web.Services.dll", "System.Data.dll" });
    parameters.GenerateExecutable = false;
    parameters.GenerateInMemory = true;
    parameters.TreatWarningsAsErrors = false;
    parameters.WarningLevel = 4;

    CompilerResults results = cProvider.CompileAssemblyFromSource(parameters, codigoClasse);
    return results.CompiledAssembly;
}

private CodeNamespace GerarNameSpace(ServiceDescription serviceDescription)
{
    var importer = new ServiceDescriptionImporter();
    importer.AddServiceDescription(serviceDescription, string.Empty, string.Empty);
    importer.CodeGenerationOptions = CodeGenerationOptions.GenerateProperties;

    var @namespace = new CodeNamespace();
    var unit = new CodeCompileUnit();
    unit.Namespaces.Add(@namespace);
    importer.Import(@namespace, unit);

    return @namespace;
}

XDocument parseXmlDocument(XmlElement ele)
{
    var xml = new XmlDocument();
    xml.LoadXml(ele.OuterXml);

    return xml;
}

来源:https://stackoverflow.com/questions/41754776/create-soap-clients-dynamic-by-wsdl

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!