多次引用类库时出现问题

时间:2009-04-18 19:15:38

标签: c# .net wcf

我会尽力解释这个问题,因为这对我来说有点奇怪。

我有一个C#类库,它定义了一堆将用作数据传输对象或DTO的类。

有一个Windows窗体应用程序,它引用了这个DTOs类库,还引用了另一个类库,它定义了Model - View - Presenter模式的Presenters。

此演示者类库具有对包含WCF代理类的另一个类库的引用。

WCF代理类库引用另一个类库,其中包含定义WCF服务合同的所有接口。

最后,这个包含WCF契约的库引用了第一个DTO类库,因为它们是作为方法的参数接收的。

现在在解释了这个基础结构后,问题是Windows表单项目没有编译我得到的错误:

'Proheart.EmployeeView'未实现接口成员 'Proheart.IEmployeeView.JobDescriptions'。 'Proheart.EmployeeView.JobDescriptions'无法实现 'Proheart.IEmployeeView.JobDescriptions' 因为它没有匹配的返回类型 'System.Collections.Generic.List'。

基本上代码如下:

//This interface is defined on the Presenters class library.
public interface IEmployeeView  
{  
   List<JobDescriptionDto> JobDescriptions { set; }
}

//This is the form in the Windows Forms project
public partial class EmployeeView : Form, IEmployeeView  
{
   public List<JobDescriptionDto> JobDescriptions { set { ... do something } }
}

拜托,我需要帮助。我知道所有类库分离可能听起来很奇怪,但这是因为部署策略。

感谢。

PS之前我没有提到Presenter类库没有对DTO的引用,WCF服务代理也没有。它似乎是从Service Interfaces类库中提取的,因为如果我手动将它添加到Presenter,我会得到一个循环引用错误。

3 个答案:

答案 0 :(得分:1)

由于错误消息中的这一行

,我怀疑你可能在某处定义了另一个List类
  

因为它没有匹配   返回类型   'System.Collections.Generic.List'

将光标移到List&lt;&gt;上用于查看它们是否都指向System的类。 Collections.Generic.List

答案 1 :(得分:0)

一种替代方式是允许代理类引用的DTO与从服务返回的DTO不同。这可能听起来很奇怪,但是如果你的客户端是用Java编写的话,那就是这种方式。客户端只能看到服务接口中引用的服务接口的代理版本和DTO classess的代理版本。

这减少了跨服务边界的耦合。

答案 2 :(得分:-1)

你错过了通用论点:

//This is the form in the Windows Forms project
public partial class EmployeeView : Form, IEmployeeView  
{
   public List<JobDescriptionDto> JobDescriptions { set { ... do something } }
}