c# 集合适配器
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# 集合适配器的更多相关文章
- android-GridView控件的使用
GridView 按行列方式显示多个组件(二维布局界面) 数据源(集合)-适配器(SimpleAdapter)-视图界面(GridView),加载适配器-配置监听器(OnItemClickListen ...
- AndroidManifest.xml文件
AndroidManifest.xml常用标签解读 1.全局篇(包名,版本信息) 2.组件篇(四大组件) Activity Service Content Provider Broadcast Rec ...
- android蓝牙通讯开发(详细)
新建一个工程之后,我们可以先看到界面左边的项目栏,我们可以看到,除了app目录以外,大多数的文件和目录都是自动生成的,我们也不需要对他们进行修改,而app目录之下的文件才是我们工作的重点.下面,我先对 ...
- C++进阶 STL(3) 第三天 函数对象适配器、常用遍历算法、常用排序算法、常用算数生成算法、常用集合算法、 distance_逆序遍历_修改容器元素
01昨天课程回顾 02函数对象适配器 函数适配器是用来让一个函数对象表现出另外一种类型的函数对象的特征.因为,许多情况下,我们所持有的函数对象或普通函数的参数个数或是返回值类型并不是我们想要的,这时候 ...
- Android—万能ListView适配器
ListView是开发中最常用的控件了,但是总是会写重复的代码,浪费时间又没有意义. 最近参考一些资料,发现一个万能ListView适配器,代码量少,节省时间,总结一下分享给大家. 首先有一个自定义的 ...
- Android应用项目中BaseAdapter、SimpleAdapter和ArrayAdapter中的三种适配器
一.写在前面: 本次我们来讲解一下Android应用中三个适配器:BaseAdapter.SimpleAdapter和ArrayAdapter.其中常见的是BaseAdapter,也是个人推荐使用的适 ...
- Android之ListView性能优化——一行代码绑定数据——万能适配器
如下图,加入现在有一个这样的需求图,你会怎么做?作为一个初学者,之前我都是直接用SimpleAdapter结合一个Item的布局来实现的,感觉这样实现起来很方便(基本上一行代码就可以实现),而且也没有 ...
- Spring映射器、适配器、解析器
1 springmvc的映射器和适配器 1.1springmvc的映射器 根据客户端请求的url,找到处理本次请求的handler(处理器),将url和controller关联起来 1.2spring ...
- Java集合源码分析(一)
Java集合工具包位于Java.util包下,包含了很多常用的数据结构,如数组.链表.栈.队列.集合.哈希表等.学习Java集合框架下大致可以分为如下五个部分:List列表.Set集合.Map映射.迭 ...
随机推荐
- Hibernate5.2之HQL查询
Hibernate5.2之HQL查询 一. 介绍 Hibernate的 ...
- redis shell命令大全
redis shell命令大全(转自http://blog.mkfree.com/posts/5105432f975ad0eb7d135964) 作者:oyhk 2013-1-28 3:11:35 ...
- 浅谈可扩展性框架:MEF
之前在使用Prism框架时接触到了可扩展性框架MEF(Managed Extensibility Framework),体验到MEF带来的极大的便利性与可扩展性. 此篇将编写一个可组合的应用程序,帮助 ...
- 链地址法实现HashMap
前注:本文介绍的HashMap并非Java类库的实现.而是根据哈希表知识的一个实现. 上文介绍了开放地址法实现HashTable,它的缺点是对hashCode映射为地址后如果出现重复地址,则会占用其他 ...
- 开放地址法实现HashTable
前注:本文不是讲解Java类库的Hashtable实现原理,而是根据计算机哈希表原理自己实现的一个Hashtable. HashTable内部是用数组存放一个(Key-Value pair)键值对的引 ...
- 第五周PSP
16号 类别c 内容c 开始时间s 结束e 中断I 净时间T GUI 学习QT视频 20:00 21:42 20m 82m 17号 类别c 内容c 开始时间s 结束e 中断I 净时间T GUI 学习Q ...
- 智能指针 ADO数据库连接
ADO库包含三个基本接口:_ConnectionPtr接口._CommandPtr接口和_RecordsetPtr接口._ConnectionPtr接口返回一个记录集或一个空指针.通常使用它来创建一个 ...
- 稍览了一下CommonJS
CommonJS是服务器端模块的规范,现在炒得很火的Node.js采用了这个规范. 根据CommonJS规范,一个单独的文件就是一个模块.加载模块使用require方法,该方法读取一个文件并执行,最后 ...
- Python:if __name__ == '__main__'
很多模块里都会看到这句话,一般用于模块自测时使用. 所有的模块都有一个内置属性 __name__. 一个模块的 __name__ 的值取决于您如何应用模块. 一个Python文件有两种使用方式,直接使 ...
- (Hibernate进阶)Hibernate基本原理(一)
在开始学hibernate之前,一直就有人说:Hibernate并不难,无非是对JDBC进一步封装.一句不难,难道是真的不难还是眼高手低? 如果只是停留在使用的层面上,我相信什么技术都不难,看看别人怎 ...