Bạn phải hiểu rằng trong ngữ cảnh của CLR, không có điều gì như một không gian tên. Không gian tên hoàn toàn là một tính năng ngôn ngữ chỉ tồn tại để đơn giản hóa mã để chúng tôi không phải luôn luôn đọc tên lớp đầy đủ.
Trong ví dụ của bạn,
namespace foo
{
public class bar { ... }
}
namespace foo.bar
{
public class baz : EventArgs { ... }
}
khi sourcecode này được biên dịch, các IL là không hề biết rằng có hai không gian tên - foo và foo.bar. Thay vào đó, nó chỉ biết về các định nghĩa lớp. Trong trường hợp này, khi nó đi qua thanh lớp, nó biết rằng bạn có một lớp được gọi là foo.bar
Khi nói đến lớp baz, nó giải quyết tên đầy đủ của lớp là foo.bar. baz
Nhưng nếu trường hợp này xảy ra, baz phải được khai báo đúng trong định nghĩa lớp của thanh chứ không phải trong không gian tên riêng biệt như bạn đã làm ở đây.
Nếu không có ví dụ thực tế, các đề xuất sẽ phải đưa ra các dự đoán được giáo dục, bao gồm tất cả các cơ sở tiềm năng hoặc không có câu trả lời hay; theo quy tắc của ngón tay cái, một không gian tên là một thể loại, hoặc tổng quát, và một lớp học một tiện ích cụ thể - đặt tên nên phản ánh điều này. Ví dụ, không gian tên 'System.Collections' và các lớp, chẳng hạn như' System.Collections.CollectionBase'. Nếu có một yêu cầu cho một lớp có tên là 'Bộ sưu tập' trong không gian tên này thì cái gì khác là sai. –
Đó là nhiều hơn hoặc ít hơn một ví dụ thực tế. Tôi muốn sử dụng một kiểu tùy chỉnh dựa trên 'EventArgs', trong lớp' bar'. Tôi có nên đặt loại tùy chỉnh trong cùng một không gian tên như 'thanh' không? – Stijn