自动实现的属性类的C#泛型

时间:2014-02-17 05:50:25

标签: c# sqlite generics windows-phone-8 type-constraints

我创建了一个表示我的SQLite数据库的表模式的属性类。类中的每个属性都成为数据库中的一个属性。

class SQLiteTables
{
    public class tblPerson
    {
        [PrimaryKey, AutoIncrement]
        public int PersonID { get; set; }
        public string PersonFirstName { get; set; }
        public string PersonMiddleName { get; set; }
        public string PersonLastName { get; set; }
    }

    public class tblSchedule
    {
        [PrimaryKey, AutoIncrement]
        public int ScheduleID { get; set; }
        public string ScheduleDescription { get; set; }
        public DateTime ScheduleStart { get; set; }
        public DateTime ScheduleEnd { get; set; }
    }

    //18 more table definitions below
}

现在,要从表中检索一些数据,

public void GetPersonList()
{
    List<tblPerson> lstTemp = dbConn.Table<tblPerson>().ToList<tblPerson>();

    // Some 20 lines of code here
}

我想避免编写特定于类型的方法,这是一项繁琐的工作。我想创建一个可重用的方法,它可以使用泛型实现检索任何表上的数据。我怎样才能做到这一点?

编辑我正在使用Windows Phone 8平台。

3 个答案:

答案 0 :(得分:1)

这应该适用于你正在做的事情。

public List<T> GetItems<T>()
{
    return dbConn.Table<T>().ToList<T>();
}

答案 1 :(得分:1)

您可以使用支持SQLite的DBLinq - 然后在数据上下文中免费获取语法。

 public IList<T> GetList<T>()
 {
     return _context.GetTable<T>().ToList();
 }

答案 2 :(得分:0)

public IEnumerable<T> GetItems<T>() where T: new()
    {
        lock (locker) {
            return dbCon.Table<T> ().ToArray ();
        }
    }

我认为关键是&#34;:new()&#34;最后