Serialization Akka.net Hyperion IgnoringDataMember

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

我在集群模式中使用akka.net。(n) 正在处理节点,当前有1个灯塔

在网络中导航的包之一公开语言信息

    /// <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
对象时,它可能会失败。您始终可以尝试将其转换为字符串,并在反序列化后解析