使用對象比較器來比較C 中的複雜對象

開發人員通常必須比較代碼中的複雜對象。繼續閱讀以瞭解如何使用C#及其Objects Comparer來完成它!

使用對象比較器來比較C 中的複雜對象

介紹

需要比較複雜對象的常見情況。有時對象可以包含嵌套元素,或者某些成員應該從比較中排除(自動生成的標識符,創建/更新日期等),或者某些成員可以具有自定義比較規則(不同格式的相同數據,如電話號碼)。開發這個小框架是為了解決這些問題。

簡而言之,Objects Comparer是一個對象 - 對象比較器,它允許開發人員逐個成員地逐個比較對象,併為某些屬性,字段或類型定義自定義比較規則。

對象比較器可以被視為即用型框架或類似解決方案的起點。

Now Objects Comparer支持可枚舉(數組,集合,列表),多維數組,枚舉,標誌和動態對象(ExpandoObject,DynamicObject和編譯器生成的動態對象)。

安裝

Objects Comparer可以作為NuGet包安裝。

Install-Package ObjectsComparer

版本1.2中有什麼新功能?

  • StringBuilder支持。
  • 設置支持。
  • Uri的支持。
  • Bug修復。

如果使用1.1版,則無需進行任何更改即可開始使用1.2版。

版本1.1中有什麼新功能?

  • 動態對象支持(ExpandoObjectDynamicObject和編譯器生成的動態對象)。
  • 按成員名稱覆蓋比較規則。
  • 按類型和按名稱使用過濾器覆蓋比較規則。
  • 該 DifferenceType 屬性已添加到Difference 課程中。

如果使用版本1.0.x,則無需進行任何更改即可開始使用版本1.1。

有用的價值比較者

該框架包含幾個自定義比較器,在許多情況下都很有用。

  • DoNotCompareValueComparer - 允許您跳過某些字段/類型。具有單例實現(DoNotCompareValueComparer.Instance)。
  • DynamicValueComparer - 將比較規則作為函數接收。
  • NulableStringsValueComparer - 空字符串和空字符串被視為相等的值。有單例實現(NulableStringsValueComparer.Instance)。
  • DefaultValueValueComparer - 允許我們將提供的值和指定類型的默認值視為相等的值(請參閱下面的示例3)。
  • IgnoreCaseStringsValueComparer - 允許我們比較字符串,忽略大小寫。有一個單例實現(IgnoreCaseStringsValueComparer.Instance)。
  • UriComparer - 允許我們比較Uri對象。


分享到:


相關文章: