Serialization Akka.net Hyperion IgnoringDataMember
我在集群模式中使用akka.net。(n) 正在处理节点,当前有1个灯塔 在网络中导航的包之一公开语言信息Serialization Akka.net Hyperion IgnoringDataMember,serialization,akka.net,hyperion,Serialization,Akka.net,Hyperion,我在集群模式中使用akka.net。(n) 正在处理节点,当前有1个灯塔 在网络中导航的包之一公开语言信息 /// <summary> /// Define scored a suite of token info /// </summary> /// <seealso cref="Hammer.Immutable.ImmutableObject" /> [DataContract] public sealed class TokenSuite : I
/// <summary>
/// Define scored a suite of token info
/// </summary>
/// <seealso cref="Hammer.Immutable.ImmutableObject" />
[DataContract]
public sealed class TokenSuite : ImmutableObject, IIdItem
{
#region Ctor
/// <summary>
/// Initializes a new instance of the <see cref="TokenSuite"/> class.
/// </summary>
public TokenSuite(Guid id, string langCode)
: base(id, langCode)
{
this.Id = id;
this.LangCode = langCode;
if (!string.IsNullOrEmpty(langCode))
LangInfo = CultureInfo.GetCultureInfoByIetfLanguageTag(langCode);
}
#endregion
#region Properties
/// <summary>
/// Gets the identifier.
/// </summary>
[DataMember]
public Guid Id { get; }
/// <summary>
/// Gets the main language code.
/// </summary>
[DataMember]
public string LangCode { get; }
/// <summary>
/// Gets the lang information.
/// </summary>
[IgnoreDataMember]
public CultureInfo LangInfo { get; }
#endregion
//
///定义一组令牌信息
///
///
[数据合同]
公共密封类令牌套件:ImmutableObject,IIdItem
{
#区域导体
///
///初始化类的新实例。
///
公共令牌套件(Guid id、字符串代码)
:base(id,langCode)
{
这个.Id=Id;
this.LangCode=LangCode;
如果(!string.IsNullOrEmpty(langCode))
LangInfo=CultureInfo.getcultureinfo-byietflanguagetag(langCode);
}
#端区
#区域属性
///
///获取标识符。
///
[数据成员]
公共Guid Id{get;}
///
///获取主语言代码。
///
[数据成员]
公共字符串语言码{get;}
///
///获取lang信息。
///
[IgnoreDataMember]
公共文化信息LangInfo{get;}
#端区
在本地没有问题,但当它通过网络(序列化)时,我在灯塔上看到了这个问题:
读取错误时,它似乎来自CultureInfo对象,但在序列化过程中它是一个被忽略的标志
我使用的是Akka版本1.3.5、Hyperion 0.9.8、Akka.Serialization.Hyperion 1.3.2-beta54
我尝试在本地进行序列化,但效果良好:
var serializer = Context.System.Serialization.FindSerializerForType(typeof(TokenSuite));
var data = serializer.ToBinary(result);
var rtoObjectBack = serializer.FromBinary<TokenSuite>(data);
var serializer=Context.System.Serialization.FindSerializerForType(typeof(TokenSuite));
var data=serializer.ToBinary(结果);
var rtoObjectBack=serializer.FromBinary(数据);
有什么想法吗?Hyperion不使用数据契约属性。这也意味着
[IgnoreDataMember]
将不被考虑
在尝试反序列化您提供的CultureInfo
对象时,它可能会失败。您始终可以尝试将其转换为字符串,并在反序列化后解析