Custom Compare + Expando = Ignored Ignores
See original GitHub issueHello,
I wrote a custom compare class (that checks if the string is actually a float)
so things like “1” and “1.000000” won’t show up as a difference
but when using said custom compare class, my MembersToIgnore list is not longer being respected
` [Test] public void test() { abc a = new abc() { ex = JsonConvert.DeserializeObject<ExpandoObject>(“{"test": "1"}”) };
abc b = new abc()
{
ex = new ExpandoObject()
};
CompareLogic compareLogic = new CompareLogic();
compareLogic.Config.MembersToIgnore.Add("*test*");
compareLogic.Config.MembersToIgnore.Add("*ex.test*");
compareLogic.Config.MembersToIgnore.Add("*.ex.test*");
compareLogic.Config.MembersToIgnore.Add("*abc.ex.test*");
compareLogic.Config.MembersToIgnore.Add("*.abc.ex.test*");
compareLogic.Config.MembersToIgnore.Add("test*");
compareLogic.Config.MembersToIgnore.Add("ex.test*");
compareLogic.Config.MembersToIgnore.Add(".ex.test*");
compareLogic.Config.MembersToIgnore.Add("abc.ex.test*");
compareLogic.Config.MembersToIgnore.Add(".abc.ex.test*");
compareLogic.Config.MembersToIgnore.Add("*test");
compareLogic.Config.MembersToIgnore.Add("*ex.test");
compareLogic.Config.MembersToIgnore.Add("*.ex.test");
compareLogic.Config.MembersToIgnore.Add("*abc.ex.test");
compareLogic.Config.MembersToIgnore.Add("*.abc.ex.test");
compareLogic.Config.MembersToIgnore.Add("test");
compareLogic.Config.MembersToIgnore.Add("ex.test");
compareLogic.Config.MembersToIgnore.Add(".ex.test");
compareLogic.Config.MembersToIgnore.Add("abc.ex.test");
compareLogic.Config.MembersToIgnore.Add(".abc.ex.test");
compareLogic.Config.CustomComparers.Add(new StringMightBeFloat(RootComparerFactory.GetRootComparer()));
compareLogic.Config.MaxDifferences = 50;
ComparisonResult result = compareLogic.Compare(a, b);
}
public class abc
{
public ExpandoObject ex;
}
public class StringMightBeFloat : BaseTypeComparer
{
public StringMightBeFloat(RootComparer rootComparer) : base(rootComparer)
{
}
public override bool IsTypeMatch(Type type1, Type type2)
{
return type1 == typeof(string) && type2 == typeof(string);
}
public override void CompareType(CompareParms parms)
{
{
var st1 = (string)parms.Object1;
var st2 = (string)parms.Object2;
if (st1.Equals(st2))
{
return;
}
float flt1;
float flt2;
if (float.TryParse(st1, out flt1) && float.TryParse(st2, out flt2))
{
if (flt1.Equals(flt2))
{
return;
}
}
AddDifference(parms);
}
}
}`
Issue Analytics
- State:
- Created 4 years ago
- Comments:11 (9 by maintainers)
Top Results From Across the Web
Ignore ExpandoObject Properties with JSON.Net Serializer ...
Is it possible to ignore ExpandoObject properties, in particular those of Delegate type, when using JsonConvert(expando, formatting, ...
Read more >Using Objects Comparer To Compare Complex Objects In C#
Briefly, Objects Comparer is an object-to-object comparer that allows us to compare objects recursively member by member and to define custom ...
Read more >Using ObjectsComparer to compare objects in .Net
Briefly, Objects Comparer is an object-to-object comparer, which allows to compare objects recursively member by member and define custom comparison rules for ...
Read more >Working with Dynamic Objects: Beyond the Basics ...
ExpandoObjects let you dynamically add members to your object at runtime ... normally ignore any methods you added (probably what you want).
Read more >Using Objects Comparer to Compare Complex Objects in C
Objects Comparer framework provides mechanism to recursively compare complex objects by properties (supports arrays, lists, different types ...
Read more >
Top Related Medium Post
No results found
Top Related StackOverflow Question
No results found
Troubleshoot Live Code
Lightrun enables developers to add logs, metrics and snapshots to live code - no restarts or redeploys required.
Start Free
Top Related Reddit Thread
No results found
Top Related Hackernoon Post
No results found
Top Related Tweet
No results found
Top Related Dev.to Post
No results found
Top Related Hashnode Post
No results found

Fixed in this commit. See your test inside.
https://github.com/GregFinzer/Compare-Net-Objects/commit/d75847b3b7e59dcf49d98104627aede635bff075
Closing after the fix