如何在值元组中使用泛型? - c#

假设我有两个枚举:

    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();
}

输出:

如何在值元组中使用泛型? - c#

如何在值元组中使用泛型? - c#

如何从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万只当然实际上这是估算的,具体应…