Tôi có một lớp gọi là 'Bài viết' trong một dự án có tên 'MyProject.Data', hoạt động như lớp dữ liệu cho ứng dụng web của tôi.
Tôi có một dự án riêng gọi là 'MyProject.Admin', đây là một hệ thống quản trị dựa trên web để xem / chỉnh sửa dữ liệu và được xây dựng bằng ASP.NET Dynamic Data.
Về cơ bản tôi muốn mở rộng lớp Article, sử dụng lớp một phần, để tôi có thể gia tăng một trong các thuộc tính của nó bằng bộ mở rộng "UIHint", cho phép tôi thay thế hộp văn bản nhiều dòng thông thường bằng điều khiển FCKEdit.
Lớp một phần và bộ mở rộng của tôi sẽ trông như thế này:
[MetadataType(typeof(ProjectMetaData))]
public partial class Project
{
}
public class ProjectMetaData
{
[UIHint("FCKeditor")]
public object ItemDetails { get; set; }
}
Bây giờ tất cả đều hoạt động tốt nếu lớp một phần nằm trong cùng dự án với lớp một phần gốc - tức là dự án MyProject.Data.
Nhưng hành vi UI không nên ngồi trong lớp Dữ liệu, mà thay vào đó, trong lớp Quản trị viên. Vì vậy, tôi muốn chuyển lớp này sang MyProject.Admin.
Tuy nhiên, nếu tôi làm điều đó, chức năng sẽ bị mất.
Câu hỏi cơ bản của tôi là: tôi có thể có 2 lớp một phần trong các dự án riêng biệt, nhưng cả hai đều đề cập đến cùng một "lớp" không?
Nếu không, có cách nào để thực hiện những gì tôi đang cố gắng thực hiện mà không trộn lẫn logic lớp dữ liệu với logic UI không?
MetadataType
làm cho các mô hình giống như ViewModels hơn.