Должно нормально работать с дженериками: -
public static string ToDelimitedString<T>(this T[] array, string delimiter)
К вашему сведению, вы могли бы [но, скорее всего, не захотели бы) сделать обратное, чтобы ограничить это, чтобы не работать с типами значений, сказав:
public static string ToDelimitedString<T>(this T[] array, string delimiter)
where T:class
Кстати, вы, вероятно, также захотите поддерживать IEnumerable, возможно, в виде перегрузки, подобной этой: -
public static string ToDelimitedString<T>(this IEnumerable<T> items, string delimiter)
{
return string.Join( delimiter, items.Select( item=>item.ToString()).ToArray());
}