作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
假设我有两个枚举:
public enum eFruits : int
{
Apple = 1,
Pear = 2,
Banana = 3
}
public enum eAnimals : int
{
Dog = 1,
Cat = 2,
Rabbit = 3
}
我想在下拉列表/ list 等中使用这些;基本上作为列表项。我当前的试用代码是这样的;
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();
}
输出:
关于c# - 如何在值元组中使用泛型类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56338324/
如何在每个新行创建一个新数组/元组? 就像我有这个循环来读取文件: for line in csv.reader(f, delimiter='\t', lineterminator='\t\t', d
我正在尝试将值写入(我可以很好地读取)MSSQL 实例。我的代码类似于: import pypyodbc lst = ['val1', 'val2', 'val3'] connection = pyp
我是一名优秀的程序员,十分优秀!