我对泛型还很陌生,作为学习练习,我尝试创建一个简单的方法,从具有指定 ID 的实体集(表)中选取实体。
public T GetEntity<T>(int id) where T : class
{
return db.GetTable<T>().SingleOrDefault(o => o.id == id);
}
上述显然行不通,因为 o.id
中的 o
未知,因此无法访问属性 id
- 有人可以帮忙解决一下吗达到这个目的?
最佳答案
如果您的所有实体都包含 id
属性,那么您可以定义一个接口(interface)
public interface IEntity
{
int id { get; }
}
在您的所有类上实现它并将您的方法更改为
public T GetEntity<T>(int id) where T : IEntity
{
return db.GetTable<T>().SingleOrDefault(o => o.id == id);
}
这样的界面在您想要为所有实体做某事的所有地方都很有用,即。按id删除。您可以向界面添加更多属性,即。时间戳。
关于时间:2019-03-17 标签:c#Linq to SQL and Generics,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4427412/