如何检查泛型?

时间:2018-07-10 16:52:46

标签: c# generics

我有一个Repository类,它从DataSource类中获取数据。

存储库:

public class Repository<TEntity> : IRepository<TEntity> where TEntity : class
{
    protected readonly DataSource Context;

    public Repository(DataSource context)
    {
        Context = context;
    }

    public TEntity Get(int id)
    {
        return Context.Set<TEntity>().Find(id);
    }
}    

数据源:

public class DataSource
{
    public IEnumerable<TEntity> Set<TEntity>() where TEntity : class
    {
        switch (typeof(TEntity))
        {
            case :

                break;
            default:
                break;
        }
    }
}    

我必须检查TEntity的类型并依赖它,选择返回List<Plane>List<Flight>的方法,依此类推。我该怎么办,还是有其他方法?

2 个答案:

答案 0 :(得分:2)

请勿切换。如果您需要针对不同类型的不同行为,请为这些类型编写强类型方法。 Generics should be generic。如果您要实现的行为不是通用行为,则不要使用通用行为。

public IEnumerable<Plane> Set<Plane>()
{
    // ...
}

public IEnumerable<Flight> Set<Flight>()
{
    // ...
}

答案 1 :(得分:-5)

请在启动开关盒之前尝试一下

var objectName = typeof(TEntity).Name;

然后检查该objectName是否大小写。