从XSD自动生成C#接口(带有函数原型)?

时间:2010-12-13 13:26:40

标签: c# interface methods xsd code-generation

我知道如何以XSD格式定义类/数据结构并自动生成等效的C#类(使用xsd.exe或更精细的xsd2code.exe)。

我想用使用上面定义的数据结构的方法定义接口类。目标是使用强类型类和接口创建一些进程到进程(在同一台机器上)通信协议。

我有一个很大的沙拉,结合了XSD,WSDL,SOAP,REST等等......我应该使用哪种技术?

10倍。

2 个答案:

答案 0 :(得分:1)

XSD用于定义数据类型,而非接口或协议。我会去混合WSDLXSD。我的意思是,您创建一个定义接口和方法的WSDL,然后将这些方法的参数绑定到XSD中定义的类型,无论是在WSDL的内部还是外部。

Samples here。如您所见,logbus-management.wsdl不仅包含XSD,还强烈引用filter logbus-filters.xsd命名空间。

从我的WSDL中,您可以使用wsdl /serverInterfaces logbus-management.wsdl logbus-filters.xsd来获取C#interface和所有数据类型到一个C#源代码文件中。如果您还通过Visual Studio生成代理,则可以获取SOAP。您可能需要一个Web服务(即ASP.NET,可能在serverless mode中),但我不确定您是否可以使用远程处理(您应该)运行SOAP或使用WCF。

希望我能得到帮助。

的后续

您现在需要使用Remoting让流程进行通信。 Here我找到了一个教程。您的骨架代码应如下所示:

using System;

namespace addsubs
{
    /// <summary>
    /// Summary description for Class1.
    /// </summary>
    public class addsubs : MarshalByRefObject, IMultiplier //what you compiled from WSDL
    {
        public int product;
        public int multiply(int a, int b)
        {
            product = a * b;
            return product;
        }
    }
}

两个应用程序必须共享 IMultiplier界面(或其他),然后当您获得对骨架对象的引用时(通过将其强制转换为IMultiplier

其他用户注意

正如我所说,我没有使用.NET Remoting的直接经验。 如果我刚才所说的错误,请不要低估我的回答。相反,请帮助我们的朋友实现他的目标。

谢谢

答案 1 :(得分:0)

以下是我最终使用的解决方案:http://www.codeproject.com/KB/codegen/XSLCodeGen.aspx