Отображение общих параметров комментариев XML в Intellisence для статического метода
У меня возникают проблемы при получении общих параметров для двух методов ниже для отображения типов в Intellisence.
Для IEnumerable<T>
Я просто хочу, чтобы это показывалось как double
,
И для IDictionary<TKey,TValue>
перегруз, хочу это показать KeyValuePair<int,string>
но, конечно, без жесткого кодирования типов.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Collections;
namespace Common.FluentValidation
{
public static partial class Validate
{
/// <summary>
/// Compares two dictionaries are null or contain equal sets of items.
/// Returns true if both instances are null or contain equal sets of <see cref="T:System.Collections.Generic.KeyValuePair'1{TKey}{TValue}"></see> items; otherwise, false.
/// </summary>
/// <typeparam name="TKey">The type of the key.</typeparam>
/// <typeparam name="TValue">The type of the value.</typeparam>
/// <param name="A">The first instance to compare</param>
/// <param name="B">The second instance to compare</param>
/// <returns>true if both instances are null or contain equal sets of <see cref="T:System.Collections.Generic.KeyValuePair'1{TKey}{TValue}"></see> items; otherwise, false.</returns>
public static bool AreBothNullOrEqualSets<TKey, TValue>(IDictionary<TKey, TValue> A, IDictionary<TKey, TValue> B)
{
// XOR for null
if ((A == null) ^ (B == null))
return false;
// Compare each value in set
if (A != null)
if (!A.OrderBy(x => x.Key).SequenceEqual(B.OrderBy(x => x.Key)))
return false;
return true;
}
/// <summary>
/// Compares two sequences are null or contain equal sets of items.
/// Returns true if both instances are null or contain equal sets of <see cref="T:Common.FluentValidation.AreBothNullOrEqualSets`1"/> items; otherwise, false.
/// </summary>
/// /// for more information.
/// <typeparam name="T">The type of the enumerable.</typeparam>
/// <param name="A">The first instance to compare</param>
/// <param name="B">The second instance to compare</param>
/// <returns>true if both instances are null or contain equal sets of <see cref="T:Common.FluentValidation.AreBothNullOrEqualSets`1"/> items; otherwise, false.</returns>
public static bool AreBothNullOrEqualSets<T>(IEnumerable<T> A, IEnumerable<T> B)
{
// XOR for null
if ((A == null) ^ (B == null))
return false;
// Compare each value in set
if (A != null)
if (!A.SequenceEqual(B))
return false;
return true;
}
}
}
Я искал и нашел несколько подсказок, но попытался несколько вещей без удачи. Лучшее, что я могу получить - это просто отобразить букву "T" на всплывающей подсказке Intellisence, что оставляет желать лучшего...
- http://msdn.microsoft.com/en-us/library/acd0tfbe%28VS.85%29.aspx
- ссылка на универсальный тип в комментарии XML-кода
- Как ссылаться на общие классы и методы в документации XML
- Обобщения в выпуске XML документации
- используя see cref с символами <> в документации XML?
- Документация XML: тег
с несколькими параметрами универсального типа
РЕДАКТИРОВАТЬ:
Вот Microsoft делает это на параметрах типа уровня класса... но не на конструкторе... Так возможно ли это для методов / конструкторов? (в идеале я хочу показать типы, встроенные в мои комментарии, но то же, что и в примере ниже, также вполне приемлемо)
0 ответов
Хотя это очень старый вопрос, сегодня я обнаружил, что борюсь с той же проблемой - и я с сожалением должен сказать, что не похоже, что есть настоящее решение.
с помощью <see cref="Dictionary{int, string}">
вызовет следующее предупреждение (по крайней мере, в VS 2017):
CS1584 XML-комментарий имеет синтаксически неверный атрибут cref 'Dictionary{int, string}'
При наведении курсора на зеленую волнистую линию VS покажет всплывающую подсказку (среди прочего):
Объявление параметра типа должно быть идентификатором, а не типом. См. Также ошибку CS0081.
Единственное решение, которое я придумал, - просто добавить пару абзацев с указанием типов TKey
а также TValue
:
/// <summary>
/// Gets a <see cref="Dictionary{TKey, TValue}"/> that maps ints to strings.
/// <para>
/// TKey is <see cref="int"/>.
/// </para>
/// <para>
/// TValue is <see cref="string"/>.
/// </para>
/// </summary>
public Dictionary<int, string> Map {get;}
Intellisence покажет это так:
Gets a Dictionary<TKey, TValue> that maps ints to strings.
TKey is int.
TValue is string.