包裹或不包裹

时间:2014-01-22 17:16:03

标签: c# .net class wrapper

我想这是一个相当主观的问题所以我会找到一个具体的例子。

在考虑设计一组包装类以使用System.Management命名空间包装对WMI信息的访问时,我遇到了一个问题,我开始想知道如何能够满足需要一次性值的情况,例如来自Win32_BIOS的BIOS序列号,以及可能需要许多不同属性或更复杂搜索的情况,例如在CIM_DataFile中搜索文件。

这让我想知道包装System.Management命名空间中提供的功能是否是一个好主意,或者最后我是否会在减少数量的名义中添加不必要的复杂和冗长的包装类应用程序中的代码。

对于这类问题的普遍共识是什么,在编写复杂的包装类时是否值得为了以后节省时间,或者更好地坚持内置类的灵活性,即使它有时也是如此似乎并不特别干净或整洁。

1 个答案:

答案 0 :(得分:4)

包装器类的目的是隐藏调用者的复杂功能。

换句话说,如果所有调用应用程序想要做的是找出序列号,那么它应该只调用类似myobj.GetSerialNumber()的东西,这将使返回该值所需的所有WMI调用。

但是,如果调用应用程序已经深入到WMI中,或者如果你发现自己模仿WMI的工作原理只有很小的改动,那么最好不要包装它并让调用应用程序做它的事情。