用集合和泛型实现接口
本文关键字:实现 接口 泛型 集合 | 更新日期: 2023-09-27 18:02:14
我试图在实体框架类生成的类中做一些抽象,并有如下设置:
EntityClassA (Generated)
{
EntityCollection<EntityClassB> EntityClassBs;
}
EntityClassB (Generated)
{
(...)
}
Partial EntityClassA : InterfaceA
{
(...)
}
Partial ClassB : InterfaceB
{
(...)
}
InterfaceA
{
IEnumerable<InterfaceB> EntityClassBs;
}
但我一直得到的问题说,EntityClassA不正确实现,因为返回类型不匹配entityclassb。
UPDATE:对不起,我不是故意在这个状态下提交这个问题的。更新示例,包括适当的接口属性名称和更详细的解释。请记住,这只是一个示例,命名法并不代表实际名称。
我想做的是我有一个wpf控件类库和一个数据库。WPF库引用用于构造自定义表的一个类的Data库。所以我想做的就是通过使用接口来减少对数据包的依赖。有办法我可以继续这样做,或者有一个更推荐的方式?
我看到的是我需要完全匹配接口属性的签名,而我不能实现这样的接口
我想我明白你想做什么。也许你可以尝试添加另一个属性,而不是改变签名(不能这样做),它只返回相同的属性,但带有你正在寻找的签名。
Partial EntityClassA : InterfaceA
{
IEnumerable<InterfaceB> CollectionEntityClassBs
{
get{ return (some cast or somthin)EntityClassBs; }
}
}
InterfaceA
{
IEnumerable<InterfaceB> CollectionEntityClassBs;
}
你没有问问题,也没有给出任何关于你正在使用的返回类型的细节,所以根据你的陈述,我将假装你正在尝试这样做:
Partial EntityClassA : InterfaceA
{
IEnumerable<ClassB> IClassBs {get; set;}
}
Partial ClassB : InterfaceB
{
(...)
}
InterfaceA
{
IEnumerable<InterfaceB> IClassBs;
}
是无效的。InterfaceA
接口指定IClassBs
(顺便说一下,名称不好的属性)在InterfaceB
为s时返回一个集合。修改方法签名返回ClassB
s集合与接口定义不匹配。
请注意,您可以在不更改返回类型的情况下返回ClassB
的实际列表:
Partial EntityClassA : InterfaceA
{
IEnumerable<InterfaceB> IClassBs
{
get
{
return new List<InterfaceB>() {new ClassB()};
}
}
}