我有一个配置良好的信号集线器,并与客户机进行了良好的通信。
但是我的hub方法接受特定类型的参数,并且表示该类型的类具有Pascal cased属性。如下图所示:
public List<DataChanges> Changes { get; set; }
public List<DataChanges> changes { get; set; }
我尝试的是:
[DataMember(Name = "changes")]
[JsonProperty("changes")]
在我的startup类中,我添加了signalr json协议,如下所示:
.AddNewtonsoftJsonProtocol(options =>
{
//options.PayloadSerializerSettings.ContractResolver = new SignalRContractResolver();
//options.PayloadSerializerSettings.ContractResolver = new CamelCasePropertyNamesContractResolver { NamingStrategy = { OverrideSpecifiedNames = true } };
})
以下是信号机合同解析程序:
public class SignalRContractResolver : IContractResolver
{
private readonly Assembly _assembly;
private readonly IContractResolver _camelCaseContractResolver;
private readonly IContractResolver _defaultContractSerializer;
public SignalRContractResolver()
{
_defaultContractSerializer = new DefaultContractResolver();
_camelCaseContractResolver = new CamelCasePropertyNamesContractResolver();
_assembly = typeof(Startup).GetTypeInfo().Assembly;
}
public JsonContract ResolveContract(Type type)
{
if (type.GetTypeInfo().Assembly.Equals(_assembly))
return _defaultContractSerializer.ResolveContract(type);
return _camelCaseContractResolver.ResolveContract(type);
}
}
我尝试了一些其他的解决方案,但没有任何效果。信号器无法应用camel大小写序列化,并且我的属性始终为null。
谁能告诉我一个解决办法吗?