c# - 有谁知道可以序列化私人成员的 ServiceStack.Text 分支?
问题描述
我有一组类似于枚举器的类,其中有两层来表示分类。Key 和 Numeral 永远不会公开公开,以强制任何实现使用运算符而不是属性 Key 和 Numeral 使用类对象本身。我正在使用 ServiceStack 来序列化嵌套了这个 EnumClass 的类。当然,ServiceStack.Text 不支持对私有成员进行序列化,但我想知道是否有人开发了它的一个分支?
顶层或父层的示例代码:
[Serializable]
public class EnumClass
{
[DataMember]
protected internal String Key;
[DataMember]
protected internal Byte Numeral;
public EnumClass(String _key, Byte _number)
{
Key = _key;
Numeral = _number;
}
public static implicit operator int(EnumClass anEnum)
{
return anEnum.Numeral;
}
public static implicit operator string(EnumClass anEnum)
{
return anEnum.Key;
}
public override bool Equals(object obj)
{
bool result = false;
if (obj.GetType() == typeof(EnumClass))
result = Equals((EnumClass)obj);
else if (obj.GetType() == typeof(int))
result = Equals((int)obj);
else if (obj.GetType() == typeof(String))
result = Equals(obj.ToString());
return result;
}
public override String ToString()
{
return Key;
}
public bool Equals(EnumClass anEnum)
{
return anEnum.Equals((int)Numeral);
}
public bool Equals(int value)
{
return Numeral == (byte)value;
}
public bool Equals(string value)
{
return Key == value;
}
public override int GetHashCode()
{
//return Key.GetHashCode() ^ Numeral.GetHashCode();
int result = 0;
unchecked // Overflow is fine, just wrap
{
result = (int)2166136261;
result = ShiftBits.ShiftAndWrap((result * 16777619) ^ Numeral, 2);
for (int x = 0; x < Key.Length; x++)
{
result = ShiftBits.ShiftAndWrap((result * 16777619) ^ Key[x], 2);
}
}
return result;
}
}
解决方案
推荐阅读
- eclipse - eclipse 是否具有自动获取和自动返回值填充功能?
- python - 将 3D Numpy 数组写入 CSV 文件
- bootstrap-4 - Bootstrap4 折叠切换
- hadoop - 在 EC2 实例中运行 Sqoop 时出错
- eclipse - 将两个文件夹合并到一个 src 中
- zip - 如何在 zip 文件中添加注释
- javascript - 正则表达式匹配目录后跟点
- ios - 为什么我的动画不流畅?
- xml - 我想在已重新排序的文件中记录一段 xml
- python - 我的 Flask-Admin ModelView 的 __init__ 没有应用程序上下文——它通常什么时候得到一个?