1

我有一个 linq-to-sql 生成的域实体,我将其转换为正确的接口,如下所示:

public IEnumerable<IApplication> GetApplications()
    {
        using (var dc = new LqDev202DataContext())
        {
            return dc.ZApplications.Cast<IApplication>().ToList();
        }
    }

但是,我重命名了 linq-to-sql 表,而没有触及我的部分类,并且代码仍然编译。

该列表有适量的元素,但它们都是空的。

我是否需要编写一个辅助方法来确保它可以工作,或者在.net 3.5 中是否有一种编译时安全的简单内置方法可以做到这一点?

4

1 回答 1

0

如果需要,您还可以使用它来进行转换:

public static IEnumerable<TDest> CastAll<TItem, TDest>(this IEnumerable<TItem> items)
{
 var p = Expression.Parameter(typeof(TItem), "i");
 var c = Expression.Convert(p, typeof(TDest));
 var ex = Expression.Lambda<Func<TItem, TDest>>(c, p).Compile();

 foreach (var item in items)
 {
    yield return ex(item);
 }
}

来自http://adventuresdotnet.blogspot.com/2010/06/better-more-type-safe-alternative-to.html

于 2010-10-21T00:18:06.527 回答