2012-02-23 5 views
5

Tôi đang cố gắng bao gồm một đoạn mã trong tài liệu XML lớp của tôi nhưng trình biên dịch phàn nàn rằng một phần tử xml không bị đóng! Đây là những gì tôi đang cố gắng để đạt đượcGenerics trong vấn đề tài liệu XML

/// <summary> 
/// Method documentation here... 
/// </summary> 
/// <remarks> 
/// <para> 
/// This class should be used as follow: 
/// <br/> 
/// ************** PROBLEM IN NEXT LINE ******************** 
/// <c> MyClass class = new MyClass<String>(); </c> 
/// </para> 
/// </remarks> 
public class MyClass<T>{ 
.... 
} 

Tôi cố gắng để thay thế các đoạn mã bằng /// <c> MyClass class = new MyClass{String}(); </c>

Bất kỳ ai đã có kinh nghiệm này trước đây chưa?

Nhờ sự giúp đỡ của bạn

+0

này được hỏi và trả lời tại http://stackoverflow.com/questions/532166/c-how-to-reference-generic- lớp-và-phương pháp-in-xml-tài liệu – kaj

+0

@KAJ kể từ khi OP cập nhật và sửa chữa một lỗi sao chép/dán Tôi đồng ý và bỏ phiếu để đóng như trùng lặp. – Filburt

Trả lời

7

Trong tài liệu xml, bạn phải thay thế niềng răng hình tam giác với dấu ngoặc nhọn:

/// <summary> 
/// Calls <see cref="DoSomething{T}"/>. 
/// </summary> 
public void CallsDoSomething() 
{ 

} 

public void DoSomething<T>() 
{ 

} 

Lý do bạn kết thúc buộc phải làm điều này, nó bởi vì nó thực sự isn' t cũng được hình thành xml nếu bạn cho phép niềng răng hình tam giác bên ngoài đánh dấu phần tử.

Thay thế bạn đã thử là chính xác.

+3

hoặc < và > – demoncodemonkey

+1

có - bạn cũng có thể làm điều đó - mặc dù nó làm cho tài liệu mã chính nó ít có thể đọc được IMHO. –

2

<remarks> của bạn không bao giờ bị đóng.

Thay thế các dấu ngoặc nhọn như bạn đã thử cũng là cần thiết.

+0

Xin lỗi, đó là sự cố sao chép/dán. Chỉ cần thêm thẻ đóng cho nhận xét. – GETah

+0

Trong trường hợp đó KAJ là đúng và sử dụng dấu ngoặc nhọn sẽ khắc phục sự cố của bạn. – Filburt

5

Bạn không đóng thành phần Remarks trong dòng thứ 4, có thể bạn đang phàn nàn về điều đó, chỉ ở số dòng sai.

Ngoài ra, với các ví dụ có chứa generics, nó chọn lên List<string> làm văn bản theo ngữ nghĩa List theo sau là một phần tử XML không rõ ràng string. Cách dễ nhất xung quanh việc này là làm List &amp;lt;string&amp;gr; khi được phân tích cú pháp tạo ra List<string> mà không phải là một phần tử XML.

C# đội biên dịch thêm {} như thay thế cho điều đó, vì vậy bạn chỉ có thể làm List{string} và nó sẽ được chế biến thành <> 's.

+0

Xin lỗi, đó là sự cố sao chép/dán. Chỉ cần thêm thẻ đóng cho nhận xét. – GETah

3

Một vài điều:

  1. thoát <> của bạn ký tự bằng cách thay thế chúng với &lt;&gt;.
  2. Đóng XML của bạn <remarks> phần với một </remarks>
  3. Khi bạn đã quyết định tham khảo một chung trong một thẻ (ví dụ: <see ... />, <seealso ... />, vv) sau đó bạn sẽ làm như vậy giống như sau: <see cref="SomeMethod{T}(T value)" />. Không bao giờ chỉ định một loại cụ thể trong tham chiếu (nghĩa là, đừng làm <see cref="SomeMethod{String}(String value)" />).

Đây là một phiên bản cố định của XML của bạn Bình luận:

/// <summary> 
/// Method documentation here... 
/// </summary> 
/// <remarks> 
/// <note type="implementsinfo"> 
///  <para>This class should be used as follow:</para> 
///  <para><c>MyClass class = new MyClass&lt;string&lt;();</c></para> 
/// </note> 
/// </remarks> 
public class MyClass<T> 
{ 
    .... 
} 
+0

Cảm ơn bạn đã phản hồi nhanh. Tôi sẽ sử dụng {} thay vì < và < – GETah