c# - 将字符串映射到实体以与通用方法一起使用

标签 c# generics nhibernate

如果我有以下类(class):

class Fruit {}
class Apple : Fruit {}
class Orange : Fruit {}

我有方法:

public List<Fruit> getFruit<T>() where T : Fruit {

 List<Fruit> fruitList = new List<Fruit>();
 return fruitList.AddRange(session.QueryOver<T>().List());

}

是否可以有一个字典将字符串映射到可以传递给此通用方法的类型,以便我可以查询正确的表?

例如:

Dictionary<string, type> typeMapper = new Dictionary<string, type>()
{
 {"Apple", AppleType??}
};

var myType = typeMapper["Apple"];
List<Fruit> fruitList = getFruit<myType>();

最佳答案

使用 Dictionary 来存储委托(delegate)怎么样?

    Dictionary<string, Func<List<Fruit>>> typeMapper = new Dictionary<string, Func<List<Fruit>>>()
    {
        {"Apple", () => { return getFruit<Apple>(); } },
        {"Orange", () => { return getFruit<Orange>(); } }
    };

    List<Fruit> fruitList = typeMapper["Apple"]();

关于c# - 将字符串映射到实体以与通用方法一起使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31378105/

相关文章:

c# - datagridview 组合框列表颜色更改为黑色 c#

javascript - 如何通过在任何地方单击外部来关闭 div?

c# - 高级类型推断

java - 在二维数组中查找最大值的通用方法

asp.net - 构建 nhibernate 的标准

NHibernate:排他锁

c# - 如何检查两个 Expression<Func<T, bool>> 是否相同

c# - 在 C# 中迭代​​数据行

java - 通用方法调用

c# - NHibernate - 根据子属性过滤掉结果