c#类型推断

时间:2011-10-07 20:34:29

标签: c# type-inference

我有一个继承自DbContext的ECMContext类。在ECMContext中,有一个MlaArticles属性DbSet<MlaArticle>,其中MlaArticle继承自WebObject。我创建了一个接受WebObject类型参数的泛型方法。该方法尝试将更改保存到数据库,如果没有,则退出更改。

我的问题 - 因为我已经有db(已经实例化了)并且我知道正在传递的WebObject的类型(在此示例中为MlaArticle),有没有办法引用DbSet集合db.MlaArticles没有传递额外的参数?我知道这是错的,但这体现了我的问题......

protected ECMContext db;

void SaveChanges<T>(T obj) where T : WebObject 
{
    try { db.SaveChanges(); }
    catch
    {
        db.MlaArticles.Remove(obj); //this is the original code
        db.DbSet<T>.Remove(obj); //something like this is what I'd like to do
    }
}

1 个答案:

答案 0 :(得分:2)

您可以使用Set<T>()操作:

try { db.SaveChanges(); }
catch
{
    db.Set<T>().Remove(obj);
}