使用扩展方法的String和DateTime实用程序函数库的建议

时间:2009-04-15 11:54:05

标签: c# c#-3.0 extension-methods

我正在为C#中的String和DateTime实用程序函数编写扩展方法库。你可以通过建议你想要成为其中一部分的String和DateTime的有用的功能来帮助我吗?根据你的建议,我可以使它更具凝聚力和集体性。

谢谢!

4 个答案:

答案 0 :(得分:8)

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

琐碎,但呼唤稍微好一些。

答案 1 :(得分:5)

那些没有专门扩展字符串或DateTime的方法,而是 target 或返回字符串或DateTime?然后你也可以构建一些intTimeSpan方法,这样你就可以编写流畅的接口,如:

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

答案 2 :(得分:4)

字符串扩展程序

  1. MakeTitle - 从TitleCase字符串创建标题,.i.e,将“FooBar”变为“Foo Bar”。我发现这对于打印枚举非常有用:fooEnum.ToString("g").MakeTitle()
  2. Collapse - 从两端修剪空白,并将所有内部空间折叠到一个空格。
  3. IsNothing - 与IsNullOrEmpty类似,但首先修剪空白,对于您不希望只是空格的TextBox输入很有帮助,但如果没有输入则设置为null。
  4. DateTime Extensions

    1. EndOfDay - 将时间设定为给定日期的晚上11:59:59
    2. StartOfDay - 将时间设定为指定日期的凌晨00:00

答案 3 :(得分:1)

字符串扩展程序

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 Extensions

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