重写.NET基类库中的现有功能

时间:2009-04-14 18:09:17

标签: c# .net asp.net vb.net

关于日志记录的另一个question I asked yesterday我被介绍给TraceListeners,这是我以前从未遇到的并且非常希望我有。我无法计算我不必要地编写记录器的次数,没有人曾经指出过这个或者问我为什么不使用内置工具。这让我想知道我忽略了哪些其他功能,并且由于我不知道的.NET功能而不必要地写入我的应用程序。

有没有其他人的.NET功能会完全改变他们编写应用程序或应用程序组件的方式,因为他们只知道.NET已经内置了支持它的方法吗?

如果其他开发人员发布了他们经常遇到的事件,如果原始开发人员只知道内置的.NET组件,那么他们经常遇到完全不必要的组件或代码块会很方便 - 例如我之前提到过的TraceListeners

这不一定包括添加的3.5本身的功能,但如果与该场景相关,则可以。

编辑 - 按照之前的评论,我对我之前记录过的语言的“隐藏功能”并不感兴趣 - 我正在寻找经常被忽视的框架组件通过我自己(或原始开发人员)的无知,不必要地编写/重写了他们自己的组件/类/方法。

4 个答案:

答案 0 :(得分:5)

yield关键字改变了我编写代码的方式。它是一个令人惊讶的小关键字,对于编写真正优秀的代码有很多影响。

Yield使用允许您将多个操作串联起来的数据创建“不同的调用”,但只能遍历列表一次。在下面的示例中,使用yield,您将只创建一个列表,并遍历数据集一次。

FindAllData().Filter("keyword").Transform(MyTransform).ToList()

yield关键字是大多数LINQ扩展所构建的,它为您提供LINQ所具有的性能。

答案 1 :(得分:2)

答案 2 :(得分:1)

我遇到的最常被忽视的功能是ASP.net健康监控系统。这里有一个不错的概述:http://aspnet.4guysfromrolla.com/articles/031407-1.aspx

我知道我亲自在几个应用程序中重新创建了它,然后才真正看到书中或网络上的任何内容。

我曾在一次会议上与某人交谈并询问过这个问题。他们告诉我,MS的开发人员沟通能力差,所以很大程度上没有记录:)

答案 3 :(得分:1)

我不久前重写了System.Net.WebClient课程。我正在做一些网络抓取并启动我自己的类来包装HttpWebRequest / HttpWebReponse。然后我发现了WebClient的一部分。无论如何我完成了它因为我需要WebClient不提供的功能(控制cookie和用户代理)。

我正在考虑重写的是String.Format()方法。我想反映用于解析输入字符串的代码并模仿它来构建我自己的“CompiledFormat”类,您可以在循环中使用它,而不必在每次迭代时重新解析格式字符串。结果将允许这样的高效代码:

var PhoneFormat = new CompiledFormat("({0}){1}-{2}x{3}");
foreach (PhoneNumber item in MyPhoneList)
{
    Console.WriteLine(PhoneFormat.Apply(PhoneNumber.AreaCode, PhoneNumber.Prefix, PhoneNumber.Number, PhoneNumber.Extension));
}

<强>更新
这促使我终于去做了。在此处查看结果:Performance issue: comparing to String.Format