我可以将一个公共函数添加到一组EntitySet <tentity>类 - LINQ to SQL </tentity>

时间:2010-01-21 01:03:41

标签: c# .net linq-to-sql inheritance

我正在使用LINQ to SQL

并希望将函数添加到自动生成的EntitySet< TEntity >集合中。

例如

City.Houses

自动生成Houses EntitySet < House >

我正在使用扩展方法将提取函数添加到EntitySet < House >

这样我就能得到像

这样的东西
City.House.FindByID(id);

但现在我也有

City.Bunglows.FindByID(id);

现在FindByID基本上对这两个类都做同样的事情。

我是否还必须扩展Bunglows并再次实现相同的功能。我不能对自动生成的EntitySet< TEntity >类进行某种干预吗?

评论Andrew Hare的回答

但是这将使FindByID()在所有EntitySet上都可用&lt; TEntity&gt;类。如果我只想在这两个特定实体集上实现该功能怎么办?

1 个答案:

答案 0 :(得分:1)

使您的扩展方法像这样通用:

public static TEntity FindByID<TEntity>
    (this EntitySet<TEntity> source, Int32 id)
{
    // ...
}

这将允许您在EntitySet<TEntity>(即EntitySet<House>EntitySet<Bungalow>)的任何已封闭构造的实例上使用此扩展方法,只要您FindByID的实现可以是适当地表达了一般。