0

我正在尝试在实体框架类生成的类中进行一些抽象,并进行如下设置:

EntityClassA (Generated)
{
   EntityCollection<EntityClassB> EntityClassBs;
}

EntityClassB (Generated)
{
   (...)
}

Partial EntityClassA : InterfaceA
{
   (...)
}


Partial ClassB : InterfaceB
{
   (...)
}

InterfaceA
{
   IEnumerable<InterfaceB> EntityClassBs;
}

但我不断收到问题说 EntityClassA 没有正确实现,因为返回类型在 EntityClassB 上不匹配。

更新:抱歉,我不打算在这种状态下提交这个问题。更新示例以包含正确的 interfaceA 属性名称和更详细的说明。请记住,这只是一个示例,命名法并不代表实际名称。

我想要做的是我有一个 wpf 控件类库和一个数据库。WPF 库引用用于构造自定义表的一个类的数据库。所以我试图做的是通过使用接口来依赖数据包。有没有办法可以这样进行,还是有更推荐的方式?

我看到的是我需要完全匹配接口属性的签名,我不能实现这样的接口。

4

2 回答 2

1

您没有提出问题,也没有提供有关您正在使用的返回类型的任何详细信息,因此根据您的陈述,我会假装您正在尝试这样做:

Partial EntityClassA : InterfaceA
{
   IEnumerable<ClassB> IClassBs {get; set;}
}

Partial ClassB : InterfaceB
{
   (...)
}

InterfaceA
{
   IEnumerable<InterfaceB> IClassBs;
}

这是无效的。该InterfaceA接口指定IClassBs(顺便说一下,名称不好的属性)如果InterfaceBs 则返回一个集合。更改方法签名以返回ClassBs 的集合与接口定义不匹配。

请注意,您可以在ClassB不更改返回类型的情况下返回一个实际的 s 列表:

Partial EntityClassA : InterfaceA
{
   IEnumerable<InterfaceB> IClassBs 
   {
       get
       {
           return new List<InterfaceB>() {new ClassB()};
       }
   }
}
于 2013-03-05T14:41:43.347 回答
1

我想我明白你想要做什么。也许您可以尝试添加另一个属性,而不是更改签名(不能这样做),该属性只返回相同的属性,但带有您正在寻找的签名。

Partial EntityClassA : InterfaceA
{
    IEnumerable<InterfaceB> CollectionEntityClassBs
    {
        get{ return (some cast or somthin)EntityClassBs;  }
    }
}

InterfaceA
{
   IEnumerable<InterfaceB> CollectionEntityClassBs;
}
于 2013-03-05T15:16:56.550 回答