Я пытаюсь написать метод расширения в IEnumerable, который будет применяться только к типам значений и строкам.
public static string MyMethod<T>(this IEnumerable<T> source) where T : struct, string
Однако «строка» не является допустимым ограничением, поскольку это запечатанный класс.
Есть ли способ сделать это?
Изменить:
На самом деле я пытаюсь подготовить список значений для предложения «IN» в динамически созданном SQL.
У меня есть много экземпляров кода, например следующий, который я хочу очистить:
sb.AppendLine(string.Format("AND value IN ({0})", string.Join(",", Values.Select(x => x.ToSQL()).ToArray())));
Где ToSQL () имеет код для обработки SqlInjection.