Trong mã C# của chúng tôi, chúng tôi có một lớp được gọi là Dự án. lớp cơ sở BusinessObject của chúng tôi (đó là tất cả đối tượng kinh doanh kế thừa từ) định nghĩa một tài sản:Phải làm gì khi tên thuộc tính khớp với tên lớp
public Project Project { get; set; }
Đây là bình thường không phải là một vấn đề miễn là chúng ta ở lại trong C# codebase. Tuy nhiên, các lớp đối tượng nghiệp vụ này được trưng ra trong các dịch vụ web qua dây. Một số ngôn ngữ tiêu thụ (chẳng hạn như ActionScript của Flex) không thể xử lý việc có một thuộc tính có cùng tên với lớp của nó.
Xung đột đặt tên này xảy ra khắp nơi trong mã của chúng tôi. Đôi khi thật dễ dàng để thay đổi tên của thuộc tính hoặc lớp học. Đôi khi nó thực sự khó khăn. Chúng tôi đã cướp bộ não của chúng tôi và không thể đưa ra một cách tiêu chuẩn tốt để xử lý điều này. Có thể đổi tên lớp Project thành ProjectType hoặc ProjectInfo, nhưng điều này là xấu và phá vỡ tất cả các mã hiện có của người tiêu dùng của chúng tôi. Chúng ta có thể để tên kiểu giống nhau và thay đổi tên của thuộc tính thành ProjectInfo, nhưng điều này gây ra cùng một vấn đề.
Có ai có bất kỳ hướng dẫn hoặc phương pháp hay nhất nào cho tình huống như vậy không?
EDIT:
Đối phó với một số những gợi ý đưa ra:
- Phương pháp không được tiếp xúc qua dây dẫn, vì vậy chúng tôi không thể sử dụng phương pháp này.
- Tôi thích quy ước đặt tên chuẩn hơn cũng tuân thủ các tiêu chuẩn đặt tên của riêng Microsoft.
- Hiển thị một hợp đồng khác cho Flex có thể là một tùy chọn. Tuy nhiên, chúng tôi đang sử dụng Weborb cho Flex interop. Weborb sử dụng sự phản chiếu để khớp chính xác với tên thuộc tính, thay vì sử dụng tuần tự hóa XML hoặc SOAP. Nếu bất cứ ai biết thêm về serialization tùy chỉnh với Weborb, đó sẽ là hữu ích.
EDIT # 2:
Để tham khảo, chúng tôi đã kết thúc đổi tên tài sản cho một cái gì đó như:
public Project ProjectInfo { get; set; }
... và mã của bạn trông hoàn toàn trái ngược với phần còn lại của .NET. Tính nhất quán vượt trội hơn IMO sở thích cá nhân. Tôi hy vọng bạn sẽ ít nhất là phù hợp với các quy ước bình thường nếu bạn đang tạo một thư viện cho các bên thứ ba sử dụng. –
Bạn đã nhận xét về điều này trước đây. Mã của tôi đang xem xét tỷ lệ cược với phần còn lại của .NET làm việc cho tôi (và tôi nhất quán với bản thân mình, không phải với thư viện lớp cơ sở): Tôi có thể biết mã có gọi 'myCode' hay' SystemCode' chỉ bằng cách xem nó , ngay cả trong một lớp con của một lớp hệ thống. – ChrisW
Và đó là một điều tốt tại sao, chính xác? Tôi nghĩ chúng ta sẽ phải đồng ý với sự khác biệt, nhưng tôi hy vọng bạn nhận ra rằng hầu hết các công ty phát triển .NET trên thế giới cũng tuân theo quy ước tiêu chuẩn.Chúng tôi không chỉ làm điều đó vì lợi ích của nó - nó làm cho mã dễ đọc hơn. –