你最喜欢的C#扩展方法是什么?(codeplex.com/extensionoverflow)

7 浏览
0 Comments

你最喜欢的C#扩展方法是什么?(codeplex.com/extensionoverflow)

已锁定。该问题及其答案因为偏题但具有历史意义而被锁定。它目前不接受新的回答或交互。

让我们列出一个答案列表,您可以在其中发布您卓越且喜爱的扩展方法

要求是必须发布完整的代码,以及如何使用它的示例和说明。

基于对此主题的高度关注,我设立了一个名为extensionoverflow的开源项目,位于Codeplex上。

请使用接受标记标记您的答案,以将代码放入Codeplex项目中。

请发布完整的源代码而不是链接。

Codeplex新闻:

2010年8月24日 Codeplex页面现在在这里:http://extensionoverflow.codeplex.com/

2008年11月11日 XmlSerialize / XmlDeserialize现已被实现单元测试

2008年11月11日,还有更多的开发者可以加入!;-) 现在就加入吧!

2008年11月11日,第三位贡献者加入了ExtensionOverflow,欢迎BKristensen

2008年11月11日,FormatWith已经实现单元测试完成。

2008年11月09日,第二位贡献者加入了ExtensionOverflow,欢迎chakrit

2008年11月09日,我们需要更多的开发者。;-)

2008年11月09日,ThrowIfArgumentIsNull已经在Codeplex上实现单元测试完成。

admin 更改状态以发布 2023年5月22日
0
0 Comments

我在我的MiscUtil项目中有各种扩展方法(完整源代码可在那里找到 - 我不会在这里重复)。我的一些喜爱的扩展方法,其中一些包括其他类(例如范围):

日期和时间处理 - 主要用于单元测试。不确定是否会在生产环境中使用:)

var birthday = 19.June(1976);
var workingDay = 7.Hours() + 30.Minutes();

范围和步幅 - 非常感谢Marc Gravell提供的运算符支持,使这成为可能:

var evenNaturals = 2.To(int.MaxValue).Step(2);
var daysSinceBirth = birthday.To(DateTime.Today).Step(1.Days());

比较:

var myComparer = ProjectionComparer.Create(Person p => p.Name);
var next = myComparer.ThenBy(p => p.Age);
var reversed = myComparer.Reverse();

参数检查:

x.ThrowIfNull("x");

将LINQ应用于匿名类型的XML - 或具有适当属性的其他类型:

// Jon32
new { Name="Jon", Age=32}.ToXElements();
// Name="Jon" Age="32" (as XAttributes, obviously)
new { Name="Jon", Age=32}.ToXAttributes()

推动LINQ - 在此解释太长,但可以搜索它。

0
0 Comments

public static bool In(this T source, params T[] list)
{
  if(null==source) throw new ArgumentNullException("source");
  return list.Contains(source);
}

允许我替换:

if(reallyLongIntegerVariableName == 1 || 
    reallyLongIntegerVariableName == 6 || 
    reallyLongIntegerVariableName == 9 || 
    reallyLongIntegerVariableName == 11)
{
  // do something....
}
and
if(reallyLongStringVariableName == "string1" || 
    reallyLongStringVariableName == "string2" || 
    reallyLongStringVariableName == "string3")
{
  // do something....
}
and
if(reallyLongMethodParameterName == SomeEnum.Value1 || 
    reallyLongMethodParameterName == SomeEnum.Value2 || 
    reallyLongMethodParameterName == SomeEnum.Value3 || 
    reallyLongMethodParameterName == SomeEnum.Value4)
{
  // do something....
}

为:

if(reallyLongIntegerVariableName.In(1,6,9,11))
{
      // do something....
}
and
if(reallyLongStringVariableName.In("string1","string2","string3"))
{
      // do something....
}
and
if(reallyLongMethodParameterName.In(SomeEnum.Value1, SomeEnum.Value2, SomeEnum.Value3, SomeEnum.Value4)
{
  // do something....
}

0