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() );