我有两个Linq To SQL生成的类RequestTowns
和OfferTowns
,它们都在部分类中实现相同的接口。
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>'
我有不同的选择来处理它:
UserControl
并摆脱IRouteTable
接口; ItemAdded
,ItemRemoved
,
ItemChanged
并以调用形式处理它们,再次使用非泛型
方式; EntitySet
转换为通用List
,将其传递给UserControl
只有在表格结束时才将其传回; EntitySet
来使编译器满意; 为什么实现该接口的接口和类的EntitySet
无法隐式转换?
我怎样才能以最优雅的方式完成这项工作?