2016-11-16 100 views
2

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

+1

请注意,在C#中,与Java不同,文件的名称不必与类的名称相匹配,因此您可以将其他声明放在任何文件中,编译器在扫描文件时可以找到它项目的一部分。 –

回答

2

你可以给你想要一个像Employee.custom.cs任何名称的文件,但你必须调用员工在相同的命名空间中的其他文件Employee类在它的类,也有partial修改器,你应该很好去。

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

+0

但是Employee类是自动生成的。他不应该采取增加部分关键字的路线..对吧? –

+0

谢谢,我已经测试过了,像魅力一样工作。 – ihavenokia

+0

@Reddy EF code-first应该默认生成部分类。 –

1

编译器始终使用全名的类。如果有一个名为MyProject的项目,为类全名会是这样的:

MyProject.Employee 

,如果你想使用相同的名称创建类,你要添加的命名分离的水平,或者如果它必须使用此生成的类进行部分分类,您必须将其标记为部分。

您可以创建(在型号/ Employee.cs):

public class MyProject.AnySubPath.Employee {} 

或者:

在文件型号/ 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的文件,并且类名应该适合文件名。

相关问题