如何在.NET中處理WMI數據 --------------------------------------------------------------------------------
學習當WMI屬性與.NET數據類型不相符時,如何進行處理。 by Ken Getz 備注:在2月12日(周三)于San Francisco舉辦的VBITS大會上,Ken Getz發布了主題為“Fill the Gaps With WMI”和“Save Yourself With .NET Serialization”的演講。本文的技巧就選自其中。
當WMI屬性與.NET數據類型不相符時 當WMI(Windows Management Instrumentation)的設計者在創建他們的類時,并沒有考慮到.NET程序員。你會發現,許多WMI屬性與.NET數據類型都不直接相符。例如,雖然WMI支持無符號整數類型,但VB.NET并不支持。有時侯,你可以用.NET提供的結構進行仿造。在其它情況下,你需要關閉VB.NET中的Option Strict來處理WMI數據。如果你發現你的代碼在Option Strict被打開的情況下不能運行,你可以將“故障”代碼隔離起來,單獨放在一個模塊中,在該模塊的頂部,將Option Strict設置為Off。
在串行化一個對象時排除一個類成員 在串行化一個對象時,serializer將所有與你的對象相關的值(即使是私有的值)都保存在輸出流中。因為.NET的serializer的目的就是讓你保存和恢復一個對象或一組對象的整個狀態,因此serializer保存所有的數據(而不僅僅是公用數據(public data))是很至關重要的。如果你想在串行化對象時明確地排除任何類成員,那么就將NonSerializable屬性添加到特定的成員上。(該技巧只適用于SoapFormatter和BinaryFormatter類——XmlFormatter類不保存專用數據(private data),因為它的目的是串行化可以用于XML Web Services的數據,其中專用數據是不起任何作用的。)
|