将接口应用于部分类,返回需要接口

时间:2018-03-07 22:50:35

标签: c# interface partial-classes

我有一套来自第三方供应商的Web服务功能,我尝试使用服务参考连接到该第三方供应商。这些函数都有一个共同的数据结构,但由于命名约定,它们都是作为单独的类引入的。我想将一个接口应用于向导创建的部分类,以便我可以使用一个函数来填充每个部分的公共数据。这是我的问题:

从导入服务开始,它会创建一系列类:

public partial class Service1_Header
{
   public Service1_WSSvcInfo ServiceInfo {get;set;}
}
public partial class Service1_WSSvcInfo
{
   public string SvcName {get;set;}
   public string SvcVersion {get;set;}
}

public partial class Service2_Header
{
   public Service2_WSSvcInfo ServiceInfo {get;set;}
}
public partial class Service2_WSSvcInfo
{
   public string SvcName {get;set;}
   public string SvcVersion {get;set;}
}

public partial class Service3_Header
{
   public Service3_WSSvcInfo ServiceInfo {get;set;}
}
public partial class Service3_WSSvcInfo
{
   public string SvcName {get;set;}
   public string SvcVersion {get;set;}
}
...

所以我创建了这样的界面:

public interface IHeader
{
    IWSSvcInfo ServiceInfo {get;set;}
}
public interface IWSSvcInfo
{
    string SvcName {get;set;}
    string SvcVersion {get;set;}
}

然后创建一个新文件,将接口分配给部分类,如下所示:

public partial class Service1_Header : IHeader
{}
public partial class Service1_WSSvcInfo : IWSSvcInfo
{}
public partial class Service2_Header : IHeader
{}
public partial class Service2_WSSvcInfo : IWSSvcInfo
{}
public partial class Service3_Header : IHeader
{}
public partial class Service3_WSSvcInfo : IWSSvcInfo
{}
...

我遇到的问题是它没有认识到我已经将接口IWSSvcInfo分配给Service [X] _WSSvcInfo,所以即使导入的Service [X] _Header实现了返回WSSvcInfo的ServiceInfo,我也是将该类定义为实现接口,它表示Service [X] _Header没有实现“IWSSvcInfo ServiceInfo”。

我已经尝试了泛型,并且摆脱了这个错误,但问题是1)我正在使用的类是复杂的,嵌套了几个层次; 2)即使我能够使泛型类工作(具有非常难看的代码),它也不会调用该方法,因为我从顶级类创建的对象无法被识别为实现整个接口结构。

有没有办法将嵌套接口附加到这些嵌套类(有或没有泛型,但最好没有)?或者是否有另一种方法来获取所有具有相同结构的多个类,并允许一个可以填充任何这些类型的方法?

提前致谢。

0 个答案:

没有答案