2011-03-29 50 views
0

我有一個WCF服務,我試圖用它來生成一個IEnumerable<IDictionary>,然後根據此建立一個網格。問題將IEnumerable <IDictionary>通過WCF傳遞給Silverlight

返回的數據在服務器上的方法簽名是:

[OperationContract] 
[FaultContract(typeof(GeneralServiceFault))] 
IEnumerable<IDictionary> GetReport(string name, ReportingParameter[] parameters); 

我用我的建設服務引用:

call "C:\Program Files\Microsoft SDKs\Silverlight\v4.0\Tools\slsvcutil.exe" http://localhost:8082/Service?wsdl /mergeConfig /config:..\ServiceReferences.ClientConfig /edb /namespace:"*,namespace.Service" /r:"c:\Program Files\Microsoft Silverlight\4.0.60129.0\System.Windows.dll" 

此生成歸結爲一個服務引用:

public Dictionary<object, object>[] EndGetReport(IAsyncResult result) 

是否有無論如何我可以得到這個與泛型IDictionary生成,所以我可以調用擴展方法找到here?或者如果不是,我該如何去做這件事?

+0

你在字典中輸送什麼類型? WCF服務不知道它們,所以它不會在元數據中公開它們。因爲客戶端只期望'Dictionary ' – 2011-03-29 11:27:19

+0

字典對象由使用DataReader類的GetValue()填充。這可以返回DataReader類可以返回的任何指定的clr類型。它不會返回我自己的任何類型。這些是否需要專門設置爲已知類型? – bobwah 2011-03-29 12:17:07

回答

0

我不認爲這是可能的...
只是更改擴展方法:

public static IEnumerable ToDataSource<TDictionary>(
      this IEnumerable<TDictionary> list) where TDictionary : IDictionary 
0

如果您使用/訪問到Visual Studio,那麼試試這個:

  • 右鍵單擊Visual Studio中的服務的服務引用解決方案資源管理器

  • 選擇讀取'配置服務引用」

  • 確保指定的集合類型System.Collections.Generic.List

  • 確保指定的字典集合類型System.Collections.Generic.Dictionary

道歉,但我不熟悉的命令 - 在線參考svcutil用於生成除默認配置以外的任何內容。