鉴于此:
var query = context.GetTable<T>();
其中“T”是传递给方法的通用实体,
我想做这样的事情:
if(typeof(TEntity) is IEntitySoftDeletable)
query = query.Cast<IEntitySoftDeletable>.Where(ent => !ent.IsDeleted);
}
这可能吗?
目前它告诉我,我不能这样投。
我意识到我可以在类或方法级别强制参数“T”为IEntitySoftDeletable,但我试图避免这种情况,并从同一方法提供更多灵活性。
答案 0 :(得分:0)
您可以使用
测试界面obj.GetType().GetInterface("IEntitySoftDelete") == null
我认为这应该适用于您需要的...只需确保为System.Reflection添加一个使用。
答案 1 :(得分:0)
我不确定我完全明白你想要什么,但这会有效吗?
query.OfType<IEntitySoftDeletable>().Where(ent => !ent.IsDeleted); //OfType will only give the ones that are IEntitySoftDelteable