Предложения для библиотеки утилит функций String и DateTime с использованием методов расширения - PullRequest
4 голосов
/ 15 апреля 2009

Я пишу библиотеку методов расширения для служебных функций String и DateTime в C #. Не могли бы вы помочь мне, предложив полезные функции utlity для String и DateTime, которые вы, возможно, захотите принять в этом? С вашими предложениями я могу сделать его более сплоченным и коллективным.

Спасибо!

Ответы [ 4 ]

8 голосов
/ 15 апреля 2009
public static bool IsNullOrEmpty(this string value){
    return string.IsNullOrEmpty(value);
}
public static string Reverse(this string value) {
    if (!string.IsNullOrEmpty(value)) {
        char[] chars = value.ToCharArray();
        Array.Reverse(chars);
        value = new string(chars);
    }
    return value;
}
public static string ToTitleCase(this string value) {
    return CultureInfo.CurrentCulture.TextInfo.ToTitleCase(value);
}
public static string ToTitleCaseInvariant(this string value) {
    return CultureInfo.InvariantCulture.TextInfo.ToTitleCase(value);
}

Тривиально, но немного приятнее звонить.

5 голосов
/ 15 апреля 2009

Как насчет методов, которые специально не расширяют строку или DateTime, а скорее target или не возвращают строку или DateTime? Тогда вы могли бы также создать несколько int и TimeSpan методов, чтобы вы могли писать беглые интерфейсы, такие как:

  DateTime yesterday =  1.Days().Ago();

.

public static TimeSpan Days(this int value)
{
    return new TimeSpan(value, 0, 0, 0);
}

public static TimeSpan Hours(this int value)
{
    return new TimeSpan(value, 0, 0);
}

public static TimeSpan Minutes(this int value)
{
    return new TimeSpan(0, value, 0);
}

//...

.

public static DateTime Ago(this TimeSpan value)
{
    return DateTime.Now.Add(value.Negate());
}

public static DateTime FromNow(this TimeSpan value)
{
   return DateTime.Now.Add(value);
}
4 голосов
/ 15 апреля 2009

String Extensions

  1. MakeTitle - сделать заголовок из строки TitleCase, т.е. включить «FooBar» в «Foo Bar». Я считаю это очень полезным для печати Enums: fooEnum.ToString("g").MakeTitle()
  2. Collapse - Обрезать пробелы с обоих концов и сворачивать все внутренние пространства в одно пространство.
  3. IsNothing - Подобно IsNullOrEmpty, но сначала обрезать пробелы, полезно для входных данных TextBox, которые не должны быть просто пробелами, но должны иметь значение null, если ничего не было введено.

Расширения DateTime

  1. EndOfDay - установить время в 23:59:59 вечера по заданной дате
  2. StartOfDay - установить время в 12:00:00 AM на заданную дату
1 голос
/ 15 апреля 2009

String Extensions

static string ToCamelCase(this string s) {...}  // Converts a string into Camel Notation, useful for code generation
static string ToPascalCase(this string s) {...} // Converts a string into Pascal Notation
static int [Soundex][1](this string s) {...}      // Gets the soundex of a string

Расширения DateTime

static bool IsWithinRange(this DateTime d, DateTime start, DateTime end) {...}
static string [ToRelativeTime][2](this DateTime d) {...}
...