private void KGySerializeObjects(object[] referenceObjects, bool compatibilityMode = true, bool checkCompatibleEquality = true, Func <Type, string> typeNameConverter = null, ITypeResolutionService typeResolver = null) { Console.WriteLine($"------------------KGySoft ResXResourceWriter (Items Count: {referenceObjects.Length}; Compatibility mode: {compatibilityMode})--------------------"); StringBuilder sb = new StringBuilder(); using (ResXResourceWriter writer = new ResXResourceWriter(new StringWriter(sb), typeNameConverter) { CompatibleFormat = compatibilityMode }) { int i = 0; foreach (object item in referenceObjects) { writer.AddResource(i++ + "_" + (item == null ? "null" : item.GetType().Name), item); } } Console.WriteLine(sb.ToString()); List <object> deserializedObjects = new List <object>(); using (ResXResourceReader reader = ResXResourceReader.FromFileContents(sb.ToString(), typeResolver)) { foreach (DictionaryEntry item in reader) { deserializedObjects.Add(item.Value); } } AssertItemsEqual(referenceObjects, deserializedObjects.ToArray()); #if NETFRAMEWORK if (compatibilityMode) { deserializedObjects.Clear(); using (SystemResXResourceReader reader = SystemResXResourceReader.FromFileContents(sb.ToString(), typeResolver)) { try { foreach (DictionaryEntry item in reader) { deserializedObjects.Add(item.Value); } } catch (Exception e) { Console.WriteLine($"System serialization failed: {e}"); Console.WriteLine("Skipping equality check"); return; } } if (checkCompatibleEquality) { AssertItemsEqual(referenceObjects, deserializedObjects.ToArray()); } } #endif }
private void SystemSerializeObjects(object[] referenceObjects, Func <Type, string> typeNameConverter = null, ITypeResolutionService typeResolver = null) { #if !NETCOREAPP2_0 using (new TestExecutionContext.IsolatedContext()) { Console.WriteLine($"------------------System ResXResourceWriter (Items Count: {referenceObjects.Length})--------------------"); try { StringBuilder sb = new StringBuilder(); using (SystemResXResourceWriter writer = #if NET35 || NETCOREAPP3_0 new SystemResXResourceWriter(new StringWriter(sb)) #else new SystemResXResourceWriter(new StringWriter(sb), typeNameConverter) #endif ) { int i = 0; foreach (object item in referenceObjects) { writer.AddResource(i++ + "_" + (item == null ? "null" : item.GetType().Name), item); } } Console.WriteLine(sb.ToString()); List <object> deserializedObjects = new List <object>(); using (SystemResXResourceReader reader = SystemResXResourceReader.FromFileContents(sb.ToString(), typeResolver)) { foreach (DictionaryEntry item in reader) { deserializedObjects.Add(item.Value); } } AssertItemsEqual(referenceObjects, deserializedObjects.ToArray()); } catch (Exception e) { Console.WriteLine($"System serialization failed: {e}"); } } #endif }