using System;
using System.Collections.Generic;
using System.Linq;
using System.Reflection;
using System.Text;
using System.Threading.Tasks; namespace ConsoleApplication1
{
public class EnumRemarkAttribute : Attribute
{
private string _description; public string Description
{
get
{
return _description; }
set { _description = value; }
}
public EnumRemarkAttribute(string description)
{
_description = description;
}
} public enum Color
{
[EnumRemark("金色")]
Gold=,
[EnumRemark("黄色")]
Huang=,
[EnumRemark("白色")]
bai=,
[EnumRemark("黑色")]
hei=
} /// <summary>
/// 集合适配器
/// </summary> public class EnumDataSource<EnumType> : List<EnumDataSource<EnumType>.EnumAdapter>
{
public EnumDataSource()
{
if (!typeof(EnumType).IsEnum)
throw new NotSupportedException("Can not support type: " + typeof(EnumType).FullName);
foreach (EnumType enumType in Enum.GetValues(typeof(EnumType)))
this.Add(new EnumAdapter(enumType));
}
/// <summary>
/// 包装适配类
/// </summary>
public sealed class EnumAdapter
{
//被包装的东西,原材料
private EnumType _value; public EnumType Value
{
get
{
return this._value;
}
} public int EnumValue
{
get
{
return Convert.ToInt32((object)this._value);
}
} public string EnumName
{
get
{
string _enumName="";
FieldInfo field = typeof(EnumType).GetField(_value.ToString());
var arr = field.GetCustomAttributes(typeof (EnumRemarkAttribute));
foreach (EnumRemarkAttribute item in arr)
{
_enumName = item.Description;
break;
}
return _enumName;
} } public EnumAdapter(EnumType value)
{
if (!Enum.IsDefined(typeof(EnumType), (object)value))
throw new ArgumentException(string.Format("{0} is not defined in {1}", (object)value, (object)typeof(EnumType).Name), "value");
this._value = value;
}
}
} class Program
{
static void Main(string[] args)
{ IList<EnumDataSource<Color>.EnumAdapter> list=new EnumDataSource<Color>();
foreach (EnumDataSource<Color>.EnumAdapter a in list)
{
Console.WriteLine(a.EnumValue+":"+a.EnumName); }
Console.ReadKey();
}
}
}

c# 集合适配器的更多相关文章

  1. android-GridView控件的使用

    GridView 按行列方式显示多个组件(二维布局界面) 数据源(集合)-适配器(SimpleAdapter)-视图界面(GridView),加载适配器-配置监听器(OnItemClickListen ...

  2. AndroidManifest.xml文件

    AndroidManifest.xml常用标签解读 1.全局篇(包名,版本信息) 2.组件篇(四大组件) Activity Service Content Provider Broadcast Rec ...

  3. android蓝牙通讯开发(详细)

    新建一个工程之后,我们可以先看到界面左边的项目栏,我们可以看到,除了app目录以外,大多数的文件和目录都是自动生成的,我们也不需要对他们进行修改,而app目录之下的文件才是我们工作的重点.下面,我先对 ...

  4. C++进阶 STL(3) 第三天 函数对象适配器、常用遍历算法、常用排序算法、常用算数生成算法、常用集合算法、 distance_逆序遍历_修改容器元素

    01昨天课程回顾 02函数对象适配器 函数适配器是用来让一个函数对象表现出另外一种类型的函数对象的特征.因为,许多情况下,我们所持有的函数对象或普通函数的参数个数或是返回值类型并不是我们想要的,这时候 ...

  5. Android—万能ListView适配器

    ListView是开发中最常用的控件了,但是总是会写重复的代码,浪费时间又没有意义. 最近参考一些资料,发现一个万能ListView适配器,代码量少,节省时间,总结一下分享给大家. 首先有一个自定义的 ...

  6. Android应用项目中BaseAdapter、SimpleAdapter和ArrayAdapter中的三种适配器

    一.写在前面: 本次我们来讲解一下Android应用中三个适配器:BaseAdapter.SimpleAdapter和ArrayAdapter.其中常见的是BaseAdapter,也是个人推荐使用的适 ...

  7. Android之ListView性能优化——一行代码绑定数据——万能适配器

    如下图,加入现在有一个这样的需求图,你会怎么做?作为一个初学者,之前我都是直接用SimpleAdapter结合一个Item的布局来实现的,感觉这样实现起来很方便(基本上一行代码就可以实现),而且也没有 ...

  8. Spring映射器、适配器、解析器

    1 springmvc的映射器和适配器 1.1springmvc的映射器 根据客户端请求的url,找到处理本次请求的handler(处理器),将url和controller关联起来 1.2spring ...

  9. Java集合源码分析(一)

    Java集合工具包位于Java.util包下,包含了很多常用的数据结构,如数组.链表.栈.队列.集合.哈希表等.学习Java集合框架下大致可以分为如下五个部分:List列表.Set集合.Map映射.迭 ...

随机推荐

  1. JVM垃圾回收参数说明整理

    java -Xms4g -Xmx4g -Xmn3g -Xss256k -server -XX:PermSize=64M -XX:MaxPermSize=64M -XX:+UseConcMarkSwee ...

  2. php数据库访问

    从$res获取行数据的时候,处理mysql_fetch_row($res),还有三个方法,分别是 mysql_fetch_row($res); 返回一个所以的数组,速度较快. mysql_fetch_ ...

  3. gerrit 修改前一次提交的方法(转载)

    From:http://sinojelly.sinaapp.com/2011/08/git-changes-submitted-by-the-previous-method-pay-special-a ...

  4. android StringBuffer类的使用

    参考 http://www.cnblogs.com/springcsc/archive/2009/12/03/1616330.html StringBuffer类和String一样,也用来代表字符串, ...

  5. 发送SMS短信(JSON) 转载

    http://blog.csdn.net/ldl22847/article/details/42553883 public   static string GetMobileConfByUserId( ...

  6. java maven诡异的错误no class found

    从服务器下载一个java web项目,启动老提示no class found,查看maven依赖库,相关的jar包都已经引入.同样一个项目,在别的机器都可以运行,唯独在我本机运行出错. 为了排错,将其 ...

  7. django Q和F查询

    Q查询——对对象的复杂查询F查询——专门取对象中某列值的操作 Q查询1.Q对象(django.db.models.Q)可以对关键字参数进行封装,从而更好地应用多个查询,例如: from django. ...

  8. logstash 1.5.3 配置使用redis做续传

    logstash是ELK中的一员大将, redis插件也是<The Logstash Book>中介绍的一个很好用的玩意儿. 之前,用比较小的集群部署的时候,没有介入redis中间件,所以 ...

  9. linux DMZ host 允许虚拟机以Host-only的方式上网

    linux DMZ host 允许虚拟机以Host-only的方式上网. host ip 192.168.0.17 vboxnet0 ip 192.168.56.1 1.首先打开linux的转发功能: ...

  10. 7. Reverse Words in a String

    题目: Given an input string, reverse the string word by word. For example,Given s = "the sky is b ...