假设我有两个枚举:
public enum eFruits : int
{
Apple = 1,
Pear = 2,
Banana = 3
}
public enum eAnimals : int
{
Dog = 1,
Cat = 2,
Rabbit = 3
}
我想在下拉列表/清单等中使用这些;基本上作为列表项。我作为试用版的当前代码是这样;
public static class EnumHelper
{
public static IEnumerable<(int eCode, eFruits eType)> GetFruitTypesAsListItems()
{
var enums = new List<(int eCode, eFruits eType)>();
foreach (var item in (eFruits[])Enum.GetValues(typeof(eFruits)))
{
enums.Add(((int)item, item));
}
return enums;
}
}
这有两个问题;
1)我想以通用的方式
2)它在列表/下拉列表等里面看起来不太好,所以我想使用ToString覆盖。
因此我想到了这样的事情:
public class EnumListItem : Tuple<int, T>
{
public EnumListItem(int eCode, T eType)
: base(eCode, eType)
{ }
public override string ToString() => $"{base.Item2.ToString()} ({base.Item1})";
}
如此有效;
1)我想将泛型与元组一起使用
2)希望使用泛型能够基于该元组生成列表项
这可能吗?我不确定该声明的外观。在这一点上我无法正常工作。有人可以指出我正确的方向吗?
参考方案
您可以尝试以下通用方法。
public static class EnumHelper<T>
{
public static IEnumerable<(int eCode, T eType)> GetListItem()
{
var enums = new List<(int eCode, T eType)>();
foreach (var item in (T[])Enum.GetValues(typeof(T)))
{
enums.Add((Convert.ToInt32(item), item));
}
return enums;
}
}
你可以这样称呼它,
public static void Main(string[] args)
{
var animals = EnumHelper<eAnimals>.GetListItem();
var fruits = EnumHelper<eFruits>.GetListItem();
}
输出:
如何从jar文件创建C库? - java我有一个图书馆的jar文件,其中的内容是一堆.class文件spl ├── acm │ ├── graphics │ │ ├── DrawLineElement.class │ │ ├── EndRegionElement.class │ │ ├── FinalPathElement.class │ │ ├── G3DRe…
有没有办法使ToEnum通用 - c#我想这样做,但是不起作用。bool TryGetEnum<TEnum, TValue>(TValue value, out TEnum myEnum) { value = default(TEnum); if (Enum.IsDefined(typeof(TEnum), value)) { myEnum = (TEnum)value; retur…
Java-非泛型类扩展了泛型类 - java我想知道如何(如果可能)创建一个类,它是泛型类的特定类型。具体来说,我有一个实现所有必需方法的abstract class Stack<Type>,我想有一个class StackInteger,而StackInteger的实例也是Stack<Integer>的实例。我看到我可以做这样的事情:class StackInteger { …
LeetCode题解计算机为什么是基于二进制的?可以是三进制么?二进制有什么好处?题解:为什么叫电子计算机?算盘应该没有二进制
LeetCode题解统计城市的所有灯泡这个是我刚毕业的时候,一个真实的面试题,这是一个开放题。题目描述:想办法,将一个城市的所有灯泡数量统计出来。题解:费米估算法1、如果某个城市常驻人口有1000万2、假设每5人居住在一套房里,每套房有灯泡5只,那么住宅灯泡共有1000万只3、假设公众场所每10人共享一只灯泡,那么共有100万只4、主要的这两者相加就得出了1100万只当然实际上这是估算的,具体应…