存储到C#中的变量通用EntitySet(Linq To SQL)

时间:2014-07-01 16:25:27

标签: c# winforms linq linq-to-sql user-controls

我有两个Linq To SQL生成的类RequestTownsOfferTowns,它们都在部分类中实现相同的接口。

public interface IRouteTable
{      
    int TownID { get; set; }
}

public partial class RequestTowns : IRouteTable
{
   int IRouteTable.TownID
    {
        get { return this.TownID; }
        set { this.TownID = value; }
    }
}
public partial class OfferTowns : IRouteTable
{
     // ... same properties as in RequestTowns
}

另一方面,我有一个UserControl,我想从父表单填充,调用以下方法:

EntitySet<IRouteTable> Route { get; set; }

    public void SetSourceObject<TEntity>(EntitySet<TEntity> Source) where TEntity : class, IRouteTable
    {
        Route = Source; // <-- Compiler error is here        
    }

将源EntitySet存储在变量中可为此UserControl的其他方法中的CRUD实体提供机会。但隐含的转换被否定了:

Cannot implicitly convert type 'EntitySet<RequestTowns>' to 'EntitySet<IRouteTable>'

我有不同的选择来处理它:

  1. 制作非通用UserControl并摆脱IRouteTable 接口;
  2. 制作公开活动ItemAddedItemRemovedItemChanged并以调用形式处理它们,再次使用非泛型 方式;
  3. EntitySet转换为通用List,将其传递给UserControl 只有在表格结束时才将其传回;
  4. 使用EntitySet来使编译器满意;
  5. 还有其他想法吗?
  6. 为什么实现该接口的接口和类的EntitySet无法隐式转换? 我怎样才能以最优雅的方式完成这项工作?

0 个答案:

没有答案