Отображение общих параметров комментариев XML в Intellisence для статического метода

У меня возникают проблемы при получении общих параметров для двух методов ниже для отображения типов в Intellisence.

Для IEnumerable<T> Я просто хочу, чтобы это показывалось как double,

Скриншот Intellisence для метода IEnumerable <T

И для IDictionary<TKey,TValue> перегруз, хочу это показать KeyValuePair<int,string> но, конечно, без жесткого кодирования типов.

Скриншот Intellisence для метода KeyValuePair <TKey, TValue

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, что оставляет желать лучшего...

РЕДАКТИРОВАТЬ:

Вот Microsoft делает это на параметрах типа уровня класса... но не на конструкторе... Так возможно ли это для методов / конструкторов? (в идеале я хочу показать типы, встроенные в мои комментарии, но то же, что и в примере ниже, также вполне приемлемо)

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.

Другие вопросы по тегам