2015-06-20 81 views
0

是否可以在XML Schema文件中引用C#项目中的类型?为了验证和智能影音意义上,我的意思是......在XML模式中引用C#类型?

可以说我有以下几点:

namespace Example 
{ 
    class myType 
    { int test = 0; } 
} 

我将如何引用模式文件中的实例名称空间,这样我可以运用MyType作为一个元素类型?

回答

1

不直接。

虽然有两种方法可以做到这一点。

首先是将您的课程标记为Serializable并使用XmlSerializer将其序列化为XML。结合这一点,您还可以使用xsd.exe为您的课程创建架构,并且可以将用作您的(其他)架构中的类型。可以使用XmlSerializer来对该类型进行序列化和反序列化。

在一个有点相关的说明,如果你有一个方法要在捕捉XML(而不是数据类型或结构),可以延长一些XSLT与C#(或VB.NET,或JavaScript)代码。 MSDN有关于如何做到这一点的更多文档,其基本思想是使用XsltArgumentListAddExtensionObject来添加该方法。也可以通过使用msxsl:script直接在XSLT中完成此操作(有关该更多信息,请参见here)。

+0

我只是想用XSD.EXE类似: “XSD d:\ somelib.dll /t:SomeNS.SubNS.SomeClass” 然而,似乎要经过每一个类,如果我没有默认构造函数(主要是故意设计),整个过程失败。任何方式让它忽略反射错误? –

+0

要序列化/反序列化一个类,它必须有一个可公开访问的默认(无参数)构造函数 - 即使该构造函数不做任何事情,也不会在其他地方使用。您应该能够使用XSD.exe的/ t参数将其限制为您想要序列化的类型。 –

+0

啊,好的。谢谢!现在我为每个类实现了默认构造函数,这很好。 –