2016-11-16 40 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的文件,並且類名應該適合文件名。

相關問題