-Refactor
This commit is contained in:
@@ -1341,6 +1341,11 @@ namespace Newtonsoft.Json.Tests.Serialization
|
||||
serializer.SerializationBinder = customBinder;
|
||||
Assert.AreEqual(customBinder, serializer.SerializationBinder);
|
||||
|
||||
#pragma warning disable CS0618 // Type or member is obsolete
|
||||
// can still fetch because DefaultSerializationBinder inherits from SerializationBinder
|
||||
Assert.AreEqual(customBinder, serializer.Binder);
|
||||
#pragma warning restore CS0618 // Type or member is obsolete
|
||||
|
||||
serializer.CheckAdditionalContent = true;
|
||||
Assert.AreEqual(true, serializer.CheckAdditionalContent);
|
||||
|
||||
@@ -1570,6 +1575,12 @@ namespace Newtonsoft.Json.Tests.Serialization
|
||||
serializerProxy.SerializationBinder = customBinder;
|
||||
Assert.AreEqual(customBinder, serializerProxy.SerializationBinder);
|
||||
|
||||
#pragma warning disable CS0618 // Type or member is obsolete
|
||||
// can still fetch because DefaultSerializationBinder inherits from SerializationBinder
|
||||
Assert.AreEqual(customBinder, serializerProxy.Binder);
|
||||
#pragma warning restore CS0618 // Type or member is obsolete
|
||||
|
||||
|
||||
serializerProxy.CheckAdditionalContent = true;
|
||||
Assert.AreEqual(true, serializerProxy.CheckAdditionalContent);
|
||||
|
||||
|
||||
@@ -884,7 +884,7 @@ namespace Newtonsoft.Json.Tests.Serialization
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
|
||||
[Test]
|
||||
public void NewSerializeUsingCustomBinder()
|
||||
{
|
||||
@@ -1318,7 +1318,6 @@ namespace Newtonsoft.Json.Tests.Serialization
|
||||
#endif
|
||||
|
||||
#if !(NET20 || NET35)
|
||||
|
||||
[Test]
|
||||
public void SerializationBinderWithFullName()
|
||||
{
|
||||
@@ -2125,38 +2124,41 @@ namespace Newtonsoft.Json.Tests.Serialization
|
||||
}
|
||||
#endif
|
||||
|
||||
|
||||
#if !(NET20 || NET35)
|
||||
|
||||
[Test]
|
||||
public void SerializerWithDefaultBinder()
|
||||
{
|
||||
var serializer = JsonSerializer.Create();
|
||||
#pragma warning disable CS0618
|
||||
Assert.NotNull(serializer.Binder);
|
||||
StringAssert.Equals(typeof(DefaultSerializationBinder).FullName, serializer.Binder.GetType().FullName);
|
||||
Assert.IsInstanceOf(typeof(DefaultSerializationBinder), serializer.Binder);
|
||||
#pragma warning restore CS0618 // Type or member is obsolete
|
||||
StringAssert.Equals(typeof(DefaultSerializationBinder).FullName, serializer.SerializationBinder.GetType().FullName);
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void ObsoleteBinderThrowsIfISerializationBinderSet()
|
||||
{
|
||||
var serializer = JsonSerializer.Create(new JsonSerializerSettings() { SerializationBinder = new FancyBinder() });
|
||||
#pragma warning disable CS0618
|
||||
Assert.Throws<InvalidOperationException>(() => { var foo = serializer.Binder; });
|
||||
#pragma warning restore CS0618 // Type or member is obsolete
|
||||
StringAssert.Equals(typeof(FancyBinder).Name, serializer.SerializationBinder.GetType().Name);
|
||||
Assert.IsInstanceOf(typeof(DefaultSerializationBinder), serializer.SerializationBinder);
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void ObsoleteBinderThrowsIfISerializationBinderSet()
|
||||
{
|
||||
var serializer = JsonSerializer.Create(new JsonSerializerSettings() { SerializationBinder = new FancyBinder() });
|
||||
ExceptionAssert.Throws<InvalidOperationException>(() =>
|
||||
{
|
||||
#pragma warning disable CS0618 // Type or member is obsolete
|
||||
var serializationBinder = serializer.Binder;
|
||||
#pragma warning restore CS0618 // Type or member is obsolete
|
||||
serializationBinder.ToString();
|
||||
}, "Cannot get SerializationBinder because an ISerializationBinder was previously set.");
|
||||
|
||||
Assert.IsInstanceOf(typeof(FancyBinder), serializer.SerializationBinder);
|
||||
}
|
||||
|
||||
public class FancyBinder : ISerializationBinder
|
||||
{
|
||||
string annotate = new string(':', 3);
|
||||
private static readonly string Annotate = new string(':', 3);
|
||||
|
||||
public void BindToName(Type serializedType, out string assemblyName, out string typeName)
|
||||
{
|
||||
assemblyName = string.Format("FancyAssemblyName=>{0}", Assembly.GetAssembly(serializedType)?.GetName().Name);
|
||||
typeName = string.Format("{0}{1}{0}", annotate, serializedType.Name);
|
||||
typeName = string.Format("{0}{1}{0}", Annotate, serializedType.Name);
|
||||
}
|
||||
|
||||
public Type BindToType(string assemblyName, string typeName)
|
||||
@@ -2165,7 +2167,6 @@ namespace Newtonsoft.Json.Tests.Serialization
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
}
|
||||
|
||||
public struct Message2
|
||||
|
||||
@@ -111,23 +111,18 @@ namespace Newtonsoft.Json
|
||||
return null;
|
||||
}
|
||||
|
||||
SerializationBinder legacySerializationBinder = _serializationBinder as SerializationBinder;
|
||||
if (legacySerializationBinder != null)
|
||||
{
|
||||
return legacySerializationBinder;
|
||||
}
|
||||
|
||||
SerializationBinderAdapter adapter = _serializationBinder as SerializationBinderAdapter;
|
||||
if (adapter != null)
|
||||
{
|
||||
return adapter.SerializationBinder;
|
||||
}
|
||||
|
||||
//Check if Default Binder was set
|
||||
if (_serializationBinder.GetType().IsAssignableFrom(typeof(DefaultSerializationBinder)))
|
||||
{
|
||||
adapter = new SerializationBinderAdapter(_serializationBinder as DefaultSerializationBinder);
|
||||
}
|
||||
|
||||
if (adapter != null)
|
||||
{
|
||||
return adapter.SerializationBinder;
|
||||
}
|
||||
|
||||
throw new InvalidOperationException("Cannot get SerializationBinder because an ISerializationBinder was previously set.");
|
||||
}
|
||||
set
|
||||
|
||||
Reference in New Issue
Block a user