2016-11-16 8 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 

Если Вы хотите создать класс с таким же именем, Вы должны добавить уровень разделения в именовании, или если он должны быть частичным классом с этим сгенерированным классом, вы должны отметить его также как частичное.

Вы можете создать (в Model/Employee.cs):

public class MyProject.AnySubPath.Employee {} 

Или:

В файле Модель/Employee.cs

public partial class MyProject.Employee {} 

В файле ViewModel/Employee.cs

public partial class MyProject.Employee {} 

важно для вас, чтобы понять, что такое частичное среднее &, что будет компилятор с классом: На самом деле компилятор будет просто поставить все partial классы вместе, а затем собрать их. Только выигрыш от partial заключается в том, что вы можете разделить код на несколько файлов. Пример Excelent для этого: Windows.Forms, где у вас есть файл «code-behind» (Form1.cs), а затем у вас есть «дизайнерский» файл (Form1.Designer.cs).

Также вы можете назвать файлы независимо от имени, которое вы хотите, это обычный стандарт, чтобы иметь 1 класс = 1, а имя класса должно соответствовать имени файла.

Смежные вопросы