我正在尝试重构一些代码,因为我有大约7次出现的代码:
List<RHEvent> eventResults = DBConnection.Table<RHEvent>().Where(t => (int)t.PreferredImage == ID).ToList();
foreach (RHEvent result in eventResults)
{
result.PreferredImage = 0;
DBConnection.Update(result);
}
其中RHEvent通过不同的出现更改为不同的类名。
我已经开始尝试编写更通用的代码,但我遇到了麻烦。这是我到目前为止所得到的:
private void ResetPreferredImage<T>(int ID) where T: new()
{
List<T> results = DBConnection.Table<T>().Where(t => (int)t.PreferredImage == ID).ToList();
}
问题是编译器不喜欢PreferredImage,因为它无法在抽象类中识别它。
有没有办法让编译器放心该属性存在,或者根本不可能做我想做的事情?
感谢。
菲利普
答案 0 :(得分:2)
你可以尝试这样的事情
private void ResetPreferredImage<T>(int ID) where T : BaseClass,new()
{
List<T> results = DBConnection.Table<T>().Where(t => (int)t.PreferredImage == ID).ToList();
}
现在,编译器会将PreferredImage属性识别为基类的属性
答案 1 :(得分:0)
如果他们没有实现公开PrefferedImage
属性的基类,那么你唯一的选择就是使用反射器。