Методы расширения объектов для типов значений - PullRequest
2 голосов
/ 26 августа 2009

У меня есть метод расширения:

public static string ToDelimenatedString(this object[] array, string delaminator) {...}

Расширение применяется к ссылочным типам, но не к типам значений. Я предполагаю, что это потому, что объект обнуляем. Как бы я написал описанный выше метод для целевых типов значений, возможно ли это даже без выписывания его для каждого типа значений?

Приветствия

Rich

1 Ответ

3 голосов
/ 26 августа 2009

Должно нормально работать с дженериками: -

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());
}
...