2010-07-07 29 views
9

Tôi đang làm việc với WPF và thường có nhu cầu lấy tên miền và tên lắp ráp của một lớp nhất định. Nhưng tôi không biết làm thế nào để làm điều này.Làm thế nào để có được tên lắp ráp và tên lớp với không gian tên đầy đủ của một lớp nhất định trong giải pháp?

Vậy, làm cách nào để chúng tôi có thể lấy tên khi duyệt các lớp trong Solution Explorer hoặc/và khi chỉnh sửa mã của lớp? Hãy giúp tôi!

Trả lời

12

Bạn có thể sử dụng Visual Studio Cửa sổ ngay lập tức làm cách nhanh chóng để có được tên hội đủ điều kiện cho một trong các dự án giải pháp.

IIRC, các bước nên làm việc:

  1. Mở tập tin của một lớp chứa trong dự án mà bạn muốn để có được tên lắp ráp;
  2. Đặt dự án đó làm dự án khởi động cho giải pháp;
  3. Mở ngay Window, C# shortcut môi trường mặc định là CTRL +D + tôi;
  4. Trong loại Cửa sổ ngay lập tức typeof(ClassNameOfStep1).AssemblyQualifiedName và nhấn Nhập.

Các ngay Window phụ thuộc vào thiết kế thời gian biểu đánh giá mà lần lượt phụ thuộc của Visual Studio Hosting Quy trình, do đó bạn cần phải có nó được kích hoạt, mà theo mặc định đã là.

Ngoài ra, tôi đã thực hiện một số kiểm tra nhanh và Tên của lớp là đủ trong mọi trường hợp ngoại trừ khi tôi thử nó trên VS 2008, yêu cầu tôi cung cấp FullName của loại.Vì vậy, nếu Name kết quả do lỗi, hãy sử dụng Name đủ điều kiện với không gian tên.

+1

Tôi đã thử, nhưng có lỗi "Tên kiểu hoặc không gian tên 'MyClass' không hợp lệ trong phạm vi này" –

+2

@Nam Gi VU, thay vì 'MyClass' cố gắng sử dụng' MyNamespace.MyClass'. –

+0

@Angelo: Tôi đặt vào không gian tên đầy đủ của lớp nhưng không hoạt động. Tôi nhận được "CCC" không tồn tại trong không gian tên 'A.BB' "khi tôi nhập vào typeof (A.BB.CCC.DDDD) .AssemblyQualifiedName :) –

4

Những nên cung cấp cho bạn những gì bạn đang sau:

var assemblyName = typeof(ClassNameGoesHere).AssemblyQualifiedName; 
var namespaceOfClass = typeof(ClassNameGoesHere).Namespace; 

tôi thấy bạn vừa thêm một lưu ý cho câu hỏi của bạn về "khi duyệt các lớp trong Solution Explorer", câu trả lời đơn giản là theo như tôi biết, bạn không thể bởi vì đó không phải là những gì Solution Explorer dành cho (nó có để duyệt các tệp trong một giải pháp, không phải nội dung bên trong chúng) và cũng vì:

  1. Một tệp có thể chứa nhiều lớp học
  2. Tất cả các tệp trong một dự án sẽ, thường, luôn biên dịch thành một cụm duy nhất, làm cho nó dự phòng để hiển thị tên đó cho mỗi tệp.

Bạn có thể muốn xem "Chế độ xem lớp" cung cấp cho bạn những gì bạn muốn, nhưng, tôi nghi ngờ điều đó sẽ không xảy ra.

+0

Hi Rob, Tôi đang tìm kiếm một giải pháp không mã hóa. Cảm ơn bạn anyway. –

+0

@Nam Gi VU, tôi đã thêm bản cập nhật để tính đến sự bổ sung của bạn vào câu hỏi liên quan đến Solution Explorer. – Rob

+0

Tôi hiểu. Tôi đã thử ở Chế độ xem lớp nhưng không có trợ giúp ở đó. Tôi đã cập nhật để thêm trường hợp: khi chỉnh sửa mã của lớp. –

-3

Bạn cần Object Browser. Nhấn Ctrl + Alt + J.

Ở đó bạn sẽ thấy tất cả thông tin meta của các loại.

+0

Bạn có thể giải thích thêm về thông tin meta nào tôi cần tìm không? –

2

Bạn có thể sử dụng F # interative, chỉ cần mở cửa sổ (View -> Khác Windows -> F # Interactive) và hãy thử như sau:

> typedefof<System.Uri>.Assembly.FullName;; 
    val it : string = 
     "System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" 

Có một vài hội tham chiếu tự động như hệ thống. Nếu bạn cần lấy tên từ một assembly khác, trước tiên bạn sẽ cần thêm tham chiếu (ví dụ như mô hình dịch vụ).

> #r "System.ServiceModel.dll";; 

--> Referenced 'C:\Windows\Microsoft.NET\Framework\v4.0.30319\System.ServiceModel.dll' 

> typedefof<System.ServiceModel.ICommunicationObject>.Assembly.FullName;; 
val it : string = 
    "System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" 

F # interative là một phần của Visual Studio 2010.

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