Определение ограничения конструктора для Универсального Параметра [дубликат]

10
задан TheVillageIdiot 4 August 2010 в 17:21
поделиться

2 ответа

К сожалению, это запрещено в C #. У вас может быть ограничение new () , которое заставляет тип иметь конструктор по умолчанию, но это единственное ограничение, связанное с конструктором, поддерживаемое .NET.

Ваш лучший вариант, вероятно, - определить интерфейс, который вы можете использовать, и ограничить его. Вместо того, чтобы пытаться установить объект при создании, вы можете использовать метод стиля «Initialize», который принимает объект «A» и вызывает его.

13
ответ дан 3 December 2019 в 21:57
поделиться

Вы не можете ограничить конструкторы универсального типа таким образом (только для того, чтобы потребовать конструктор без параметров), но вы можете взять делегата для выполнения конструкции:

public static IList<T> ConvertTo<A, T>(this IEnumerable<A> list, Func<A, T> constructionFunc)
{
    return list.Select(constructionFunc).ToList();
}

И использовать его следующим образом:

var IList<T> converted = someSequence.ConvertTo(a => new T(a));
3
ответ дан 3 December 2019 в 21:57
поделиться
Другие вопросы по тегам:

Похожие вопросы: