抱歉,如果这个问题以前被问过,我找不到类似的问题。
我有一个可列举的选择进入我的课堂:

public enum OrdinalValue
{
   None = 0,
   Qualification = 1,
   Career = 2,
   Faculty = 3
}

基于此可枚举性,我是否有3个属性调用,用于从实体集合中为以下每一项返回数据:
public List<Qualification> ByQualification { get; set; }
public List<Career> ByCareer { get; set; }
public List<Faculty> ByFaculty { get; set; }

我想创建一个基于从调用方法传回的枚举返回正确属性的泛型方法,如下所示:
public List<T> GetEntities<T>(OrdinalValue ord)
{
    List<T> value = default(List<T>);

    // based on enum, cast the correct List<T> and return value
    // something like:
    if (ord == OrdinalValue.Career)
        return (List<T>)Convert.ChangeType(this.ByCareer, typeof(T));

    return value;
}

有可能吗?

最佳答案

听起来你想要的是:

public List<T> GetEntities<T>(OrdinalValue ord)
{
    object ret;

    switch(ord)
    {
        case OrdinalValue.Career:
            ret = ByCareer;
            break;
        case OrdinalValue.Faculty:
            ret = ByFaculty;
            break;
        case OrdinalValue.Qualification:
            ret = ByQualification;
            break;
        default:
            throw new ArgumentOutOfRangeException("ord");
    }
    return (List<T>) ret;
}

不过,我觉得这不是一个好的设计。在不了解全局的情况下,很难提出更好的建议,但这并不是一种真正通用的方法。

10-06 02:45