【问题标题】:Super-interface in a partial class in WCFWCF 中的部分类中的超级接口
【发布时间】:2015-04-27 21:43:37
【问题描述】:

我正在创建一个具有多个接口的 WCF 服务,将“IService”作为我的主接口(服务合同)和基于我的模块添加的其他接口。 比如 - “IStudent”、“IClass”、“ITeacher”等。

所以我的计划是这样的-

[ServiceContract]
public interface IKCCWebService : IStudent, IClass, ITeacher
{}

并像这样使用我的服务 -

public partial class MyService : IKCCWebService
{} 

public partial class MyService : IStudent
{
   // Student interface implemented
} 

public partial class MyService : IClass
{
   // Class interface implemented
} 

等等。如果我这样做,我会收到错误 - “MyService 没有实现接口成员“IKCCWebService””。

我不想一次性实现所有接口,所以我采用这种方法。

如果您有任何建议,请告诉我。

【问题讨论】:

    标签: wcf interface partial-classes


    【解决方案1】:

    我认为您误解了部分类的用途。

    部分类不允许您实现类或接口的“部分”。部分类只是一种允许在不同位置定义类的部分的方法。当编译器构建您的项目时,它会找到一个类的所有部分定义并将它们组合成完整的定义。

    例如这段代码:

    partial class MyClass: BaseClass
    {
    }
    
    sealed partial class MyClass: IFirstInterface
    {
        public void FirstMethod(){ }
    } 
    
    public partial class MyClass: ISecondInterface
    {
        public void SecondMethod(){ }
    } 
    

    真的是这样翻译的:

    public sealed class MyClass : BaseClass, IFirstInterface, ISecondInterface
    {
        public void FirstMethod(){ }
        public void SecondMethod(){ }
    }
    

    所有成员、修饰符、实现的接口和继承的类都会在构建时应用于该类。

    这种情况的典型用法是当类的一部分是动态生成的(例如通过工具或设计器),而类的一部分是手动生成的。该类可以声明为部分并在两个文件之间拆分 - 一个是您不接触的(因为该工具可以随时重新生成它),另一个是该工具不接触的,您将所有代码放在其中。


    在您的情况下,声明多个部分类没有任何意义。由于您的部分定义之一包括MyService : IKCCWebService,因此需要MyService 类来定义IKCCWebService 定义的所有 成员。

    如果您不想一次性实现所有接口的逻辑,则不必这样做。只需一行定义所需的接口方法:throw new NotImplementedExeption(); 编译器并不关心方法的作用,只要定义了方法即可。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-02-06
      • 2013-01-22
      • 1970-01-01
      • 2015-01-05
      • 1970-01-01
      • 2020-09-20
      相关资源
      最近更新 更多