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映射.迭 ...
随机推荐
- Redis介绍以及安装(Linux)
Redis介绍以及安装(Linux) redis是当前比较热门的NOSQL系统之一,它是一个key-value存储系统.和Memcached类似,但很大程度补偿了memcached的不足,它支持存储的 ...
- [HTML] CSS3 边框
CSS3 边框 用CSS3,你可以创建圆角边框,添加阴影框,并作为边界的形象而不使用设计程序,如Photoshop. 在本章中,您将了解以下的边框属性: border-radius box-shado ...
- poj 2513 Colored Sticks trie树+欧拉图+并查集
点击打开链接 Colored Sticks Time Limit: 5000MS Memory Limit: 128000K Total Submissions: 27955 Accepted ...
- 【VB.NET】文本框快捷键支持
我们知道VB.NET中的文本框是不支持Ctrl+A的快捷键的. 如果让它支持呢? Private Sub txtSQL_KeyDown(ByVal sender As Object, ByVal e ...
- archlinux 内核编译笔记
# cp linux-3.10.5.tar.gz /usr/src/linux-3.10.5.tar.gz# cd /usr/src# tar xvzf linux-3.10.5.tar.gz lin ...
- QTP实现功能测试的时候,当新版本的页面都改变了,应该如何解决
去更改对象仓库的属性和更改对象仓库.
- 模块化InnoSetup依赖项安装
原文在这里:http://www.codeproject.com/Articles/20868/NET-Framework-Installer-for-InnoSetup 源文件地址:http://w ...
- POS管理系统之供应商新增
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"% ...
- Android Service 文档
应用场景: 1 用于将后台逻辑(Service中)和UI逻辑(Activity中)进行解耦,实现Service功能的复用,为其他程序提供功能. 2 后台功能,由于Activity在进入后台时(On ...
- Java内各种进制的表示
不同进制的数据表现: 二进制:由0,1组成.以0b开头. 八进制:由0,1,...7组成.以0开头. 十进制:由0,1,...9组成.默认整数是十进制. 十六进制:由0,1,...9,a,b,c,d, ...