2015-06-20 41 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

啊,好的。謝謝!現在我爲每個類實現了默認構造函數,這很好。 –