我试图在像这样的通用方法中使用通用:
public Boolean Eval<T>( )
{
var firstOrDefault = db.Class.OfType<T>().FirstOrDefault();
}
所有都有共同的属性,例如“ SupplierId”,因此通常可以做到:
public Boolean Eval<T>( )
{
var firstOrDefault = db.Class.OfType<T>().FirstOrDefault(r=>r.SupplierId == intSupplierId);
}
但是,智能将对此抱怨,因为它不知道包含“ SupplierId”属性。是否有可能做到这一点?如果可以,怎么办?
非常感谢。
最佳答案
您可以添加where子句。您的供应商ID必须存在于您的基类中。
同样,所有类都需要从您的基类扩展。 Constraints on Type。
public Boolean Eval<T>() where T : MyBaseClass
{
var firstOrDefault = db.Class.OfType<T>()
.FirstOrDefault(r => r.SupplierId == intSupplierId);
}
class MyBaseClass
{
public int SupplierId { get; set; }
}
class MyCustomClass : MyBaseClass
{
//Extended class
}
另外,您可以具体化。
public Boolean Eval()
{
var firstOrDefault = db.Class.OfType<MyClass>()
.FirstOrDefault(r => r.SupplierId == intSupplierId);
}