У меня возникли проблемы с получением общих параметров для двух приведенных ниже методов для отображения типов в 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
- с использованием см. cref с символами ‹› в XML-документации? < / а>
- XML-документация: тег ‹see› с несколькими универсальными параметры типа
ИЗМЕНИТЬ:
Microsoft делает это с параметрами типа уровня класса ... но не с конструктором ... Возможно ли это для методов / конструкторов? (в идеале я хочу показать типы, встроенные в мои комментарии, но то, как это показано на изображении ниже, также вполне приемлемо)