2011-02-15 55 views
1

我有一個聲明元素「RecordRefSet」在basetypes XSD中;它是「RecordRef」元素的容器元素。 「RecordRefSet」元素在一組WSDL中的不同位置被引用。svcutil不會生成複雜類型,它使用/ xmlserializer包裝另一種類型的數組有時

當我的第一個項目從這些WSDL和XSD生成代碼時,生成的代碼包含一個名爲「RecordRefSet」的類,該類在各個地方使用。

但是,當我的第二個項目從這些WSDL和XSD的子集生成代碼時,生成的代碼不包含名爲「RecordRefSet」的類,而是直接在第一個項目使用實例的地方使用「RecordRef」 「RecordRefSet」類。

我想知道什麼決定SVCUTIL何時決定生成「RecordRefSet」類,以及何時決定直接使用「RecordRef」數組。

我檢查過它在兩種情況下都運行完全相同的SVCUTIL版本,使用相同的命令行選項(生成服務合約,XMLSerializer)。唯一的區別是第一個項目包含我所有的WSDL和XSD文件,生成的代碼總量更大,第二個項目使用WSDL和XSD文件的子集。

回答

0

我不知道SvcUtil的確切細節,但是如果您將[KnownType(typeof(YourType)]屬性添加到您的類中,這將告訴代理生成器服務使用哪些類型,並根據它應該生成每次都爲您提供RecordRefSet類

+0

我使用svcutil.exe作爲目標(vs項目文件中的命令)將xml架構序列化爲c#類,參數爲/ ser:xmlserializer/noconfig/n:*,mynamespace/O:filename .cs @(SourceWSDL,'')@(SourceXSD,''), – grantadesign 2011-02-16 09:45:18

相關問題