public void CanDoCustomTypeResolveByResolvingToDifferentName() { // arrange serializer.AddNameResolver(d => { if (d == typeof(SomeMessage)) { return(new TypeDescriptor("Rebus.Tests", "Rebus.Tests.Serialization.Json.TestJsonMessageSerializer+SomeDucktypinglyCompatibleMessage")); } return(null); }); // act var message = RoundtripMessage(new SomeMessage { SomeField = "hello!" }); // assert message.ShouldBeOfType <SomeDucktypinglyCompatibleMessage>(); ((SomeDucktypinglyCompatibleMessage)message).SomeField.ShouldBe("hello!"); }
/// <summary> /// Adds a function that will determine how a given type is turned into a <see cref="TypeDescriptor"/>. /// Return null if the function has no opinion about this particular type, allowing other functions and /// ultimately the default JSON serializer's opinion to be used. /// </summary> public JsonSerializationOptions AddNameResolver(Func <Type, TypeDescriptor> resolve) { jsonMessageSerializer.AddNameResolver(resolve); return(this); }