gpt4 book ai didi

c# - List 项的 T 泛型

转载 作者:太空狗 更新时间:2023-10-30 00:43:57 32 4
gpt4 key购买 nike

很抱歉,如果之前有人问过这个问题,我找不到类似的问题。

我有一个无数的选择进入我的类(class):

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

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

关于c# - List<T> 项的 T 泛型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9167354/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com