序列化枚举型

lookfeng 2004-08-11 05:30:58
枚举在序列化为XML后以枚举名出现。那么如何控制它让它以枚举值出现呢?
例如:
enum Test
{
A = 1,
B = 3
}

Class T
{
public Test dd;
}
现在实例化T,dd = Test.A ,则该实例序列化后为
<T>
<dd>A</dd>
</T>
问题是:我如何让它序列化为
<T>
<dd>1</dd>
</T>




...全文
630 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
1979xt 2004-08-14
  • 打赏
  • 举报
回复
反序列化后应该能还原成枚举型的吧?
saucer 2004-08-14
  • 打赏
  • 举报
回复
not sure if this is what you need, but try

public enum Test
{
[XmlEnum("1")]
A = 1,
[XmlEnum("3")]
B = 3
}
lookfeng 2004-08-14
  • 打赏
  • 举报
回复
mars131(自由自在131) 不要想当然,我说的是序列化。为的是在两个应用间传递信息,而且,两个应用不是同个厂家实现的。
lookfeng 2004-08-14
  • 打赏
  • 举报
回复
XmlEnum的确可以更改序列化后的值。但是这个同样必须更改类设计。但是我想到到了一个方法。
XmlAttributeOverrides overrides = new XmlAttributeOverrides();
Type t = typeof(Test);
string[] names = Enum.GetNames(t);
Array values = Enum.GetValues(t);
for (int i = 0; i < names.Length; i++)
{
XmlAttributes attrs = new XmlAttributes();
XmlEnumAttribute xEnum = new XmlEnumAttribute();
xEnum.Name = ((int)values.GetValue(i)).ToString();
attrs.XmlEnum = xEnum;
overrides.Add(t, names[i], attrs);
}
XmlSerializer serializer = new XmlSerializer(typeof(T), overrides);

不知道有没有更好的方法?
mars131 2004-08-13
  • 打赏
  • 举报
回复
拿DataSet把这个XSD读进去,再拿填充好数据的DataSet写出来不就可以了!
lookfeng 2004-08-13
  • 打赏
  • 举报
回复
zjsen(星愿)(个人观点,仅供参考.请自行验证) 说的的确可行。但问题是我需要序列化的类是通过XSD自动生成的,最好不要更改它(以利于自动化)。所以不能用此办法。
mars131 2004-08-12
  • 打赏
  • 举报
回复
enum Test
{
A = 1,
B = 3
}

public class T
{
private Test dd;
public Test Dd
{
set
{
DD = value;
}
get
{
return dd;
}
}


}

public class D
{
public void deserilaze()
{
T last = new T ();
Test two = new Test();
last.Dd = two;
}

}
八爪鱼-杭州 2004-08-12
  • 打赏
  • 举报
回复
Class T
{
public int _dd;
public Test dd
{
get{(Test)System.Enum.Parse(typeof(Test),_dd.ToString());}
set{_dd=Convert.ToInt32(value.ToString("D"));}

}
}
amami 2004-08-12
  • 打赏
  • 举报
回复
八爪鱼-杭州 2004-08-12
  • 打赏
  • 举报
回复
Class T
{
private Test dd;
public string ddd
{
get{dd.ToString("D");}
}

}
lookfeng 2004-08-12
  • 打赏
  • 举报
回复
有人知道吗?
csq0516 2004-08-11
  • 打赏
  • 举报
回复
up

110,500

社区成员

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

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

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