Về mặt kỹ thuật, có thể, nhưng có một số cạm bẫy. Trước tiên, hãy để tôi chỉ cho bạn một ví dụ. Giả sử thư mục App_GlobalResources
của tôi trông giống như vậy:
/App_GlobalResources
/Test
TestSubresource.resx
TestResource.resx
Mỗi tệp tài nguyên có một mục duy nhất có tên là "TestString". Tôi đã thêm từng tệp tài nguyên bằng cách sử dụng trình đơn Visual Studio để nó tạo một lớp cho tôi. Theo mặc định, tất cả các lớp được thêm vào thư mục App_GlobalResources
sẽ có cùng một không gian tên là Resource
. Vì vậy, nếu tôi muốn sử dụng trình tạo lớp và tôi muốn Test
trong không gian tên, tôi cần phải đi vào tệp TestSubresource.Designer.cs và thay đổi không gian tên theo cách thủ công. Khi tôi làm điều đó, tôi có thể làm như sau:
var rootResource = Resources.TestResource.TestString;
var subResource = Resources.Test.TestSubResource.TestString;
Tôi cũng có thể tham khảo chúng bằng cách sử GetGlobalResourceObject
:
var rootResource = GetGlobalResourceObject("TestResource", "TestString");
var subResource1 = GetGlobalResourceObject("TestSubresource", "TestString");
Chú ý rằng tôi vẫn sử dụng "TestSubresource" như là phương tiện để tham khảo các nguồn lực trong tệp đó mặc dù nó nằm trong thư mục con. Bây giờ, một trong những sản phẩm khai thác, là tất cả các tệp phải là duy nhất trên tất cả các thư mục trong App_GlobalResources
hoặc dự án của bạn sẽ ném một lỗi thời gian chạy. Nếu tôi thêm một nguồn tài nguyên có tên là "TestResource.resx" đến/Test, nó sẽ ném lỗi runtime sau:
The resource file '/App_GlobalResources/TestResource.resx' cannot be used, as it conflicts with another file with the same name.).
Điều này đúng ngay cả khi tôi thay đổi không gian tên trên tài nguyên mới. Vì vậy, trong kết luận, có thể, nhưng bạn tăng tỷ lệ mắc lỗi thời gian chạy vì hai tệp tài nguyên có tên giống nhau trong các phần khác nhau của cấu trúc thư mục App_GlobalResources
được hệ thống tệp cho phép chứ không phải bởi. MẠNG LƯỚI.