c#的枚举序列化

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
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值