c#的枚举序列化

论坛 期权论坛 脚本     
匿名技术用户   2020-12-28 02:22   16   0
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Reflection;
using System.IO;

namespace ConsoleApplication1
{
[System.AttributeUsage(AttributeTargets.All, AllowMultiple = false)]
public class EnumSerializedAttribute : System.Attribute
{
private string _serialized;

public EnumSerializedAttribute(string s)
{
this._serialized = s;
}

public string GetValue()
{
return _serialized;
}
}

public static class MyHelper
{
public static string AsString(this Enum o)
{
Type t = o.GetType();
string filedName = Enum.GetName(t, o);
System.Reflection.FieldInfo f = t.GetField(filedName);
object[] atts = f.GetCustomAttributes(true);

for (int i = 0; i < atts.Length; i++)
{
object att = atts[i];
if (att is EnumSerializedAttribute)
{
EnumSerializedAttribute r = (EnumSerializedAttribute)att;
return r.GetValue();
}
}

return filedName;
}
}

class Program
{

enum Operation
{
[EnumSerialized("Enable Serialized")]
Enable = 1,
[EnumSerialized("Disable Serialized")]
Disable = 0,
Other = 2
}

static void Main(string[] args)
{
Console.WriteLine(Operation.Disable.AsString());
Console.WriteLine(Operation.Enable.AsString());
Console.WriteLine(Operation.Other.AsString());

Console.Read();
}
}
}

大家还有没有更好的思路和方法?

转载于:https://www.cnblogs.com/li7125502/archive/2012/04/11/2442635.html

分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:7942463
帖子:1588486
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP