Допустим, у нас есть два курсора файлы, которые загружаются в C# объекты:Как глубоко сравнивать несериализуемые объекты?
using (var ms = new MemoryStream(Resource.file1))
_cursor1 = new System.Windows.Input.Cursor(ms);
using (var ms = new MemoryStream(Resource.file2))
_cursor2 = new System.Windows.Input.Cursor(ms);
Есть причины, я хотел бы сравнить эти объекты (например, предположить, что file1
может быть копией file2
и я как его обнаружить). У меня есть метод, который пытается десериализации объектов в массив байт, для того, чтобы, наконец, сравнить такие массивы:
public static byte[] ToByteArray(this object obj)
{
var bf = new BinaryFormatter();
using (var ms = new MemoryStream())
{
bf.Serialize(ms, obj);
return ms.ToArray();
}
}
К сожалению, использование кидает ошибки сериализации:
var equal = _cursor1.ToByteArray().SequenceEqual(_cursor2.ToByteArray());
Additional information: Type 'System.Windows.Input.Cursor' in Assembly 'PresentationCore, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35' is not marked as serializable.
Что путь сравнить такие объекты?
Используйте другой сериализатор? – CodesInChaos
@CodesInChaos: Не могли бы вы рассказать? – jwaliszko