我正在尝试重构一些代码,因为大约有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,因为它无法在抽象类中识别它。

有没有一种方法可以确保编译器该属性存在,或者根本无法执行我想做的事情?

谢谢。

菲利普

最佳答案

你可以尝试这样的事情

private void ResetPreferredImage<T>(int ID) where T : BaseClass,new()
        {
            List<T> results = DBConnection.Table<T>().Where(t => (int)t.PreferredImage == ID).ToList();
        }


现在,编译器将把PreferredImage属性识别为基类的属性

关于c# - 在C#中将类作为参数传递,然后要访问类的属性,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/22842478/

10-09 07:39