This commit is contained in:
James Newton-King
2014-05-09 18:29:40 +12:00
parent d68c9198f2
commit 08c87d3ef4
@@ -43,6 +43,20 @@ namespace Newtonsoft.Json.Tests.Serialization
[TestFixture]
public class DynamicConcreteTests : TestFixtureBase
{
public class DynamicConcreteContractResolver : DefaultContractResolver
{
protected override JsonContract CreateContract(Type objectType)
{
JsonContract contract = base.CreateContract(objectType);
// create a dynamic mock object for interfaces or abstract classes
if (contract.CreatedType.IsInterface || contract.CreatedType.IsAbstract)
contract.DefaultCreator = () => DynamicConcrete.GetInstanceFor(contract.CreatedType);
return contract;
}
}
[Test]
public void UseDynamicConcreteIfTargetObjectTypeIsAnInterfaceWithNoBackingClass()
{
@@ -100,18 +114,6 @@ namespace Newtonsoft.Json.Tests.Serialization
bool FuncWithValType_2();
}
public class DynamicConcreteContractResolver : DefaultContractResolver
{
protected override JsonContract CreateContract(Type objectType)
{
JsonContract contract = base.CreateContract(objectType);
if (contract.CreatedType.IsAbstract || contract.CreatedType.IsInterface)
contract.DefaultCreator = () => DynamicConcrete.GetInstanceFor(contract.CreatedType);
return contract;
}
}
/// <summary>
/// Creates run-time backing types for abstract classes and interfaces
/// </summary>