我有一个类 Employee.cs ,当我连接到数据库时由EntityFramework自动生成,现在我想实现部分类,但我可以'使用" Employee.cs"该类的名称,因为它已经存在。我可以提供其他名称,它会起作用吗?你能解释一下编译器如何知道还有另一个Employee.cs的部分类吗?
答案 0 :(得分:2)
您可以为文件提供您想要的任何名称,例如 Employee.custom.cs ,但您必须在与Employee类相同的命名空间中调用 Employee 中的类在另一个文件中,也使用partial
修饰符,你应该很高兴。
编译器只收集具有相同名称的所有partial
类,并将其编译为每个名称一个类。
答案 1 :(得分:1)
编译器始终使用类的全名。如果有一个名为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文件并且类名应符合文件名,这是通用标准。