C# 序列化如何指定字段名称

kissmja 2012-12-29 07:59:06

[Serializable]
class testconfig
{
[XmlAttribute("newname")]
internal string version = "未修改"; //程序混淆后,字段名字就会改变。
internal string[] 测试;
internal string[] 测试2;
}


二进制序列化
FileStream fs = new FileStream(filename, FileMode.Open);
BinaryFormatter formatter = new BinaryFormatter();
return formatter.Deserialize(fs);



我把这个类给混淆后,,,类名和字段名都会改变,,,这样就不能序列化读取呢。。


能否用个 【Attribute】 属性设置下,,,让混淆后的程序,,保存成固定值,读取也固定值。。。


不根据字段名字来读取序列化和保存序列化。。。。。














...全文
653 5 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
kissmja 2012-12-30
  • 打赏
  • 举报
回复
引用 2 楼 sp1234 的回复:
你自己写个混淆功能,然后卖给微软吧。
上午好好的查了下 MSDN 上面有例子,,直接修改二进制序列化字段或属性名称。。 看来不需要自己写混淆器呢,微软本来就有这功能,直接支持。
kissmja 2012-12-29
  • 打赏
  • 举报
回复
引用 1 楼 kissmja 的回复:
比如 XML序列化可以用 [XmlAttribute("newname")] 设置序列化后保存在 XML中的名字。。。


[Serializable]
class testconfig
{
internal string version = "未修改";
internal string[] arr1 = new string[] { "22" };
internal string[] arr2 = new string[] { "33" };
internal List<string> arr3;
internal int var1 = 0;
internal int var2 = 0;
}



可以清楚的看到二进制序列化后,,文件保存的格式。。。我就问下用属性有没有方法保存指定的名字



jf6364 2012-12-29
  • 打赏
  • 举报
回复
回头研究下在说
  • 打赏
  • 举报
回复
你自己写个混淆功能,然后卖给微软吧。
kissmja 2012-12-29
  • 打赏
  • 举报
回复
比如 XML序列化可以用 [XmlAttribute("newname")] 设置序列化后保存在 XML中的名字。。。

111,098

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • AIGC Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧