signalR和CustomTypeConverter

我想序列化派生类型,如这里所解释的但是对于signalR我想实现从JsonConverter派生的自定义转换器

我把它添加到signalR作为folows

var serializer = GlobalHost.DependencyResolver.GetService(typeof(JsonSerializer)) as JsonSerializer; var i = new CustomTypeConverter(); serializer.Converters.Add(i); GlobalHost.DependencyResolver.Register(typeof(JsonSerializer), () => serializer); 

当我调试此函数时,我应该在public override bool CanConvert(Type objectType)处理什么类型我没有看到我认为是我的解决方案的一部分的类型

这让我疯了几个小时。 感谢halter73的评论,我能够在我的特殊情况下找到解决问题的方法:我需要管道来为我创建开箱即用的界面实例。 所以解决方案如下:

 class CustomResolver : Microsoft.AspNet.SignalR.Hubs.DefaultParameterResolver { public override object ResolveParameter( Microsoft.AspNet.SignalR.Hubs.ParameterDescriptor descriptor, Microsoft.AspNet.SignalR.Json.IJsonValue value ) { if( descriptor.ParameterType.IsInterface ) { object TargetObject =  return value.ConvertTo( TargetObject.GetType() ); } else { return value.ConvertTo( descriptor.ParameterType ); } } } 

然后在你打电话之前

 WebApp.Start() 

注册此新参数解析器:

 GlobalHost.DependencyResolver.Register( typeof( Microsoft.AspNet.SignalR.Hubs.IParameterResolver ), () => new CustomResolver() );