我有几个实体框架类,它们实现以下IInactive接口。
public interface IInactive
{
bool inactive { get; set; }
}
例如,我的Order类定义如下:
public class Order : IInactive
{
[Key]
[Required]
public Guid orderId { get; set; }
...
public bool inactive { get; set; }
}
我正在尝试实现一种通用方法,该方法可用于所有对象(实体),无论它们是否实现了IInactive接口。它将被称为:
var query = GetAllActive<Order>();
我对此通用方法的代码如下:
public IQueryable<T> GetAllActive<T>() where T : class
{
DbSet<T> dbSet = this._db.Set<T>();
// Does the entity implement the IInactive interface.
// If yes, only return "active" row, otherwise return all rows
if (typeof(T)is IInactive)
{
// Problem: the code in this block never executes, that is,
// (typeof(T)is IInactive) never evaluates to true
...
}
return dbSet;
}
非常感谢您为解决此问题提供的帮助!谢谢。
答案 0 :(得分:1)
代替
if (typeof(IInactive).IsAssignableFrom(typeof(T)))
尝试
--------B------------------C------------------D-----------------E------
----inspector_1----inspector_2----inspector_3--------date
-------Mark------------ Jhon----------- sare------------ 8/21/2019
Jhon---------------------------------------------------- 8/22/2019
sare--------------------Mark-----------------------------8/27/2019
Jho---------------------Mark------------sare-------------8/29/2019