1

次のように、適切なインターフェイスにキャストする linq-to-sql で生成されたドメイン エンティティがありました。

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

ただし、部分クラスに触れずにlinq-to-sqlテーブルの名前を変更しましたが、コードはまだコンパイルされています。

リストには適切な量の要素が含まれていましたが、それらはすべて null でした。

これが機能することを確認するためにヘルパー メソッドを記述する必要がありますか、または .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 に答える