2009-07-21 6 views
7

ASP.NET có một tính năng cho phép bạn khai báo các không gian tên được sử dụng ngầm định trong web.config.Có thể đặt tên cho các không gian tên .NET trong app.config?

<configuration> 
<system.web> 
    <pages> 
    <namespaces> 
    <add namespace="System.Web.Mvc"/> 
    </namespaces> 
    </pages> 
</system.web> 
</configuration> 

Tôi tò mò muốn biết cấu hình cho các môi trường mạng khác (như winform, ứng dụng bảng điều khiển và đặc biệt là ứng dụng Silverlight) có khả năng này không. Nếu vậy, thì câu hỏi tiếp theo là liệu chúng tôi có thể đặt bí danh một không gian tên trong cấu hình đã nói hay không.

Các analog của bit mã này, nhưng qua cấu hình:

using MyNamespace = System.Web.Mvc; 

chỉnh sửa: ý định của tôi xuất phát từ nhìn vào các dự án như silversprite nhằm cung cấp một API giống hệt nhau cho XNA cho Silverlight. Điều này cho phép bạn viết một trò chơi XNA một lần, và sau đó triển khai nó lên web bằng cách sử dụng Silverlight. Vấn đề duy nhất là tất cả các phiên bản silversprite của các API đều nằm trong một không gian tên khác, do đó, để sử dụng nó, bạn cần sử dụng ifdef xung quanh các câu lệnh using. Nó sẽ là tuyệt vời nếu người ta có thể chỉ đơn giản là bí danh không gian tên silversprite để mã của bạn sẽ không phải thay đổi giữa các nền tảng.

Trả lời

10

No. Không gian tên được yêu cầu tại thời gian biên dịch. Nó chỉ là kịch bản mà việc biên dịch được thực hiện "muộn" (như trong ASP.NET), nơi điều này làm cho bất kỳ ý nghĩa.

Điều gì thậm chí còn có nghĩa là thêm không gian tên vào thời gian thực thi, nếu mã đã được biên dịch chưa?

Bạn có thực sự ngay sau tùy chọn để tránh viết một loạt các chỉ thị using ở đầu mỗi tệp? Nếu vậy, và nếu C# hỗ trợ nó, đó sẽ là thuộc tính của dự án (đó là về biên dịch, không thực thi). Tuy nhiên, C# không hỗ trợ - các không gian tên được nhập chỉ là các không gian tên được chỉ định bởi using chỉ thị trong tệp hiện tại.

I nghĩ VB có ý tưởng về "không gian tên mặc định" nhưng C# chắc chắn không. Cá nhân tôi nghĩ đó là một điều tốt. (Bạn cũng có thể muốn xem this question. Tôi không biết liệu nó có hiệu quả hay không, vì ý định của bạn không rõ ràng vào lúc này.)

+0

đủ công bằng ... Tôi chỉ hy vọng có lẽ tôi đã không quen thuộc với tính năng này. nhưng thật đáng buồn bạn đã xác nhận những gì tôi tin là đúng :-) Ngoài ra, tôi làm rõ ý định của tôi ở trên chỉ trong trường hợp ai đó tò mò. Cảm ơn Jon! –