【问题标题】:How to implement partial class in MVC4?如何在 MVC4 中实现部分类?
【发布时间】:2016-11-16 14:38:25
【问题描述】:

我有一个类 Employee.cs 在我连接到数据库时由 EntityFramework 自动生成,现在我想实现一个 partial class 但我不能使用该类的“Employee.cs”名称,因为它已经存在。我可以给它其他名称,它会起作用吗?你能解释一下编译器是如何知道 Employee.cs 的另一个部分类的吗?

【问题讨论】:

  • 请注意,在C#中,与Java不同,文件名不必与类名匹配,因此您可以将其他声明放在任何文件中,编译器会在扫描属于项目的文件。

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


【解决方案1】:

你可以给文件起任何你想要的名字,比如Employee.custom.cs,但是你必须在与Employee类相同的命名空间中调用其中的类Employee在另一个文件中,也带有partial 修饰符,你应该很高兴。

编译器只是收集所有具有相同名称的partial 类并将其编译为每个名称一个类。

【讨论】:

  • 但是 Employee 类是自动生成的。他不应该采取在那里添加部分关键字的路线..对吗?
  • @Reddy EF 代码优先应该默认生成部分类。
  • 好吧,这是有道理的。谢谢斯坦利
【解决方案2】:

编译器总是使用类的全名。如果有一个名为 MyProject 的项目,则该类的全名类似于:

MyProject.Employee

如果你想创建同名的类,你必须在命名中添加一个分离级别,或者如果它必须是这个生成的类的部分类,你必须将它也标记为一个部分。

您可以创建(在 Model/Employee.cs 中):

public class MyProject.AnySubPath.Employee {}

或者:

在文件Model/Employee.cs

public partial class MyProject.Employee {}

在文件 ViewModel/Employee.cs

public partial class MyProject.Employee {}

对您来说重要的是要了解部分含义是什么以及编译器会对您的类产生什么影响:事实上,编译器会将所有 partial 类放在一起然后编译它们。成为partial 的唯一好处是您可以将代码拆分到多个文件中。一个很好的例子是Windows.Forms,你有“代码隐藏”文件(Form1.cs),然后你有“设计器”文件(Form1.Designer.cs)。

您也可以为文件命名任何您想要的名称,拥有 1 class= 1 个文件只是通用标准,并且类名应该适合文件名。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-01-05
    • 2013-02-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多