【问题标题】:If a partial class inherits from a class then all other partial classes with the same name should also inherit the same base class?如果一个部分类继承自一个类,那么所有其他同名的部分类也应该继承同一个基类?
【发布时间】:2014-02-15 06:50:48
【问题描述】:

我的 MVC 项目中有一个 Model 类,如下所示。

public partial class Manager : Employee
{
    public string Name {get;set;}
    public int Age {get;set;}
}

我在同一个项目的 App_Code 文件夹中有这个类。现在我想知道我的这个类是否也需要从Employee类继承?

public partial class Manager 
{
    public void SaveEmployee();
}

我必须这样做,因为我的客户希望我移动 App_Code 文件夹中处理数据库的所有方法。

是的,这两个类共享同一个命名空间。

【问题讨论】:

    标签: c# .net asp.net-mvc partial-classes


    【解决方案1】:

    这是跨多个声明定义的单个类,而不是两个不同的类。您只需要在单个声明中定义继承模型,例如:

    public class Foo { }
    
    //Bar extends Foo
    public partial class Bar : Foo { }
    
    public partial class Bar {  }
    

    但是,如果您尝试以下操作,则会生成“部分声明 'Bar' 不得指定不同的基类”的编译器错误:

    public class Foo { }
    
    public partial class Bar : Foo { }
    
    public partial class Bar : object {  }
    

    【讨论】:

    • 你说得对,普雷斯顿,但现在我遇到了另一个问题。似乎我无法将部分类从 Model 扩展到 App_Code 文件夹,因为现在我在尝试访问模型类的属性时遇到错误:“编译器错误 CS1061 - 当您尝试调用方法或访问类时会发生此错误不存在的成员。”但是,如果我将这两个部分类都放在模型中,它就可以正常工作。
    • @PrestonGuillot 如果你继承的基础有一个构造函数怎么办?我似乎无法创建我的部分类,而不必从两者中调用基本构造函数,即使我希望我只需要从一个中调用?
    • @Chucky 在没有看到您的代码的情况下,我不清楚您的确切问题 - 不过,听起来值得提出一个新问题。从概念上讲,我不确定“必须从两者调用基本构造函数”是什么意思 - 如果您通过提供新构造函数来扩展类并且想要确保基类,所有类在 C# 中都有一个构造函数构造函数被调用,你会在你的新类的构造函数中这样做,但你只需要在部分类的单个文件中定义构造函数。
    • 我找到了我的问题,为什么我的部分类不能使用一个构造函数 - 命名空间不匹配。
    【解决方案2】:

    是的,分部类的另一部分仍然是同一个类,因此它确实继承自 Employee。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-01-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多