我已經使用.Net Reflection.Emit創建動態類及其字段。現在,當我在啓用了silverlight的WCF服務中使用此動態類對象的通用列表時,它在參考端會給我一個錯誤。服務引用不知道這個動態創建的類型。這是我能想到的。我對此不確定嗎?任何機構對於如何用DataContract及其帶有DataMember的字段來裝飾這個動態創建的類有什麼想法?運行時將DataContract和DataMember添加到使用.Net反射創建的Dynamic Class
3
A
回答
2
即使你添加DataContract
和DataMember
屬性使用Reflection.Emit的在運行時,不能包括在服務元數據和客戶端發現合同中創建一個類,只是通過增加這些屬性,因爲創建服務元數據步驟通過在服務有機會運行之前檢查合同參數和返回值並創建服務描述來完成。
一個簡單的辦法是在服務操作中使用弱類型化的參數,如XElement或Message類直接
IE:
void SomeOperation(XElement parameter);
void SomeOtherOperation(Message message);
一個不太簡單的選擇,就是使用自定義元數據行爲以及爲動態生成的類導出元數據,方法是執行IWsdlExportExtension以導出自定義元數據。這工作假設類前向服務和相同的類結構的任何呼叫在每個應用程序運行產生生成(所以可能不是一個合適的選擇)
0
你可能想調用PropertyBuilder.SetCustomAttribute與基於空DataMemberAttribute構造一個CustomAttributeBuilder。類似於TypeBuilder的東西。
相關問題
- 1. 添加DataMember和DataContract onbuild
- 2. WCF和[DATACONTRACT] + [DATAMEMBER]
- 3. 將DataMember添加到與DataContract不同的命名空間中
- 4. 在運行時使用反射將新屬性添加到類中
- 5. .net使用反射時的運行時類型轉換
- 6. DataContract,默認DataMember值
- 7. WCF DataContract DataMember順序?
- 8. 當我沒有[DataMember]添加到[DataContract]中的字段時會發生什麼?
- 9. 如何在運行時使用DBIx :: Class和Catalyst添加關係?
- 10. 將圖形添加到運行時創建的組件
- 11. 如何將滾動條添加到SkinnableContainer創建的運行時?
- 12. 使用反射的運行時結構
- 13. .NET反射加載DLL文件給運行時錯誤(R6034)!
- 14. datacontract序列化使用反射嗎?
- 15. 是否可以創建「class」運行時?
- 16. 使用反射將項目添加到通用列表/集合
- 17. 如何將KVO應用於在運行時創建的@dynamic屬性?
- 18. 在實體框架POCO模板中添加[DataMember] [DataContract]屬性
- 19. modopt和.NET反射
- 20. 如何將反射添加到UILabel。 IOS
- 21. WCF REST:ReadAsDataContract使用類「沒有」裝修屬性DataContract和DataMember
- 22. 帶有抽象DataMember數組的WCF DataContract
- 23. 添加C++文件,使用Qt創建器編譯和運行
- 24. 向所有類中添加[DataContract]和[DataMember]是否會影響性能
- 25. 即使在提供DataContract和DataMember後,WCF - 序列化異常
- 26. 在運行時從字符串創建namedtuple實例(反射/動態創建)
- 27. 追加到使用反射
- 28. 使用反射將項目添加到列表<T>
- 29. 使用反射將項目添加到ListBox,RadioList,Combobox
- 30. 如何將datacontract添加到由類型化數據集創建的類型(xxxDataTable)?
我認爲你是對的。但是我在代碼中做了更改,使其更簡單,避免了這種複雜的編程。感謝您的建議。 – 2011-06-09 07:19:26