У меня есть класс под названием «Статья» в проекте под названием «MyProject.Data», который действует как уровень данных для моего веб-приложения.
У меня есть отдельный проект под названием «MyProject.Admin», который представляет собой веб-систему администрирования для просмотра / редактирования данных и был создан с использованием динамических данных ASP.NET.
В основном я хочу расширить класс Article, используя частичный класс, чтобы я мог расширить одно из его свойств с помощью расширителя "UIHint", который позволит мне заменить обычное многострочное текстовое поле элементом управления FCKEdit.
Мой частичный класс и расширитель будут выглядеть так:
[MetadataType(typeof(ProjectMetaData))]
public partial class Project
{
}
public class ProjectMetaData
{
[UIHint("FCKeditor")]
public object ItemDetails { get; set; }
}
Теперь все это работает нормально, если частичный класс находится в том же проекте, что и исходный частичный класс, то есть проект MyProject.Data.
Но поведение пользовательского интерфейса должно находиться не на уровне данных, а на уровне администратора. Поэтому я хочу переместить этот класс в MyProject.Admin.
Однако, если я это сделаю, функциональность будет потеряна.
Мой фундаментальный вопрос: могу ли я иметь 2 частичных класса в разных проектах, но оба относятся к одному и тому же «классу»?
Если нет, есть ли способ выполнить то, что я пытаюсь сделать, не смешивая логику уровня данных с логикой пользовательского интерфейса?
MetadataType
делает модели более похожими на ViewModels.