2009-11-26 30 views
5

Tôi đang thiết kế không gian tên để giữ một tập hợp các lớp sẽ xử lý các tác vụ liên quan đến người dùng cho một số ứng dụng khác nhau. (Log-in, xác thực vv)Một lớp học có cùng tên với không gian tên không?

Vấn đề là không gian tên sẽ được gọi Fusion.User nhưng sau đó nó đòi hỏi một lớp học trong đó không gian tên có ý nghĩa để gọi User.

Nếu bạn có một lớp học có cùng tên với không gian tên? Hay tôi đang sử dụng phương pháp sai ở đây?

+0

thể trùng lặp của [Làm thế nào để tránh việc cùng tên cho một lớp và đó là không gian tên, chẳng hạn như Technology.Technology?](http://stackoverflow.com/questions/1158092/ làm thế nào để tránh-có-cùng-tên-cho-một-lớp-và-không-tên-không-tên-kỹ thuật của nó) – nawfal

Trả lời

1

Có lớp được đặt tên giống như không gian tên (gói) có thể dẫn đến suy nghĩ rằng lớp là trọng tâm của gói. Nhưng nếu tôi nhận được nó một cách chính xác Người dùng chỉ là một đối tượng dữ liệu trong trường hợp của bạn.

Theo như tôi thấy bạn có 2 lựa chọn:

  1. Tên tên của bạn không gian khác nhau ví dụ Fusion.Security
  2. Sử dụng hậu tố cho tên lớp cho biết mục đích của nó, ví dụ: UserDTO, UserAction, vv
+0

Tôi thích đề xuất 'Fusion.Security' - có lẽ suy nghĩ của tôi quá hẹp –

0

Tôi có thể gọi tên không gian 'usertasks' để tránh bất kỳ sự nhầm lẫn nào. Bạn sẽ phải đủ điều kiện lớp bên trong bằng cách sử dụng không gian tên thường xuyên để tránh nhầm lẫn trình biên dịch.

1

Không gian tên là Fusion.User
Lớp Full Name sẽ Fusion.User.User

Đó là một thực hành tốt để giữ cho chúng khác nhau bởi vì

  1. Nó tránh nhầm lẫn với nhà phát triển
  2. Nó cũng trông xấu xí trong một số trường hợp như ở đây chúng tôi đang sử dụng hai người dùng.

    sử dụng Fusion;
    namespace xyz {
    kiểm tra public class
    {
    User.User userObject {get; set;}}

    }
    Vì vậy, lựa chọn tốt hơn là nên sử dụng tên gọi khác nhau

1

Có những trường hợp sử dụng cùng tên sẽ gây ra vấn đề. Một trong đó nhảy ngay lập tức để tâm trí là khi tiêu thụ một dịch vụ WCF. Khi tôi đã làm điều này gần đây trong một lớp học được gọi là "someBehaviour" trong không gian tên "companyName.someBehaviour" để tiêu thụ "MyService", trình biên dịch đã chặn tôi nói rằng MyService không tồn tại trong không gian tên someBehaviour. Thay đổi tên lớp thành một cái gì đó khác (và hữu ích hơn nhiều) đã giải quyết vấn đề và cho phép tôi biên dịch hội đồng.

Các vấn đề liên quan