50得票6回答
C#接口的扩展方法命名规范

我通常将我的C#接口命名为IThing。 我正在为IThing创建一个扩展方法类,但我不知道该如何命名。 一方面,称其为ThingExtensions似乎意味着它是某个Thing类的扩展类,而不是IThing接口的扩展类。 它还会使扩展类在按字母顺序查看文件时与其扩展的接口分开排序。 另一方面...

49得票7回答
枚举的扩展方法,而不是枚举实例

我有一个类似下面的枚举来表示我的“物品”: public enum Things { OneThing, AnotherThing } 我想要为这个枚举编写一个扩展方法(类似于Prise在这里的答案),但是该方法仅适用于枚举实例,如下: Things thing; var ...

49得票4回答
是否有类似于ForEach的方法可用于IList?

可能重复: IEnumerable<T>的LINQ等价于foreach循环 List<T>有一个名为ForEach的方法,它在每个元素上执行传递的操作。var names = new List<String>{ "Bruce", "Alfr...

48得票3回答
两个C#扩展泛型方法之间的调用不明确,一个是T:class,另一个是T:struct。

考虑两个扩展方法: public static T MyExtension<T>(this T o) where T:class public static T MyExtension<T>(this T o) where T:struct 还有一个类: cla...

46得票3回答
扩展方法 vs 静态工具类

我正在寻找在C#应用中使用扩展方法与静态工具类之间的优缺点。 例如,使用扩展方法的优点是通过类名方便调用,而不是像“StringUtils”这样。但缺点是它可能会模糊框架中存在的内容和不存在的内容之间的界限。

45得票6回答
扩展方法引发的ArgumentNullException或NullReferenceException?

当在空实例上调用扩展方法(不允许该扩展方法)时,你认为最好抛出什么类型的异常?由于扩展方法只是静态方法,因此可以认为应该抛出ArgumentNullException,但另一方面,它们像实例方法一样使用,因此可能更自然地使用NullReferenceException。让我们看以下示例:pub...

45得票9回答
部分类 vs 扩展方法

我没有使用这两种方式来扩展类或创建扩展方法的太多经验。通过查看他人的工作,我在这里有一个问题。 我看到有人在项目中使用部分类来扩展实体类。同时,在同一项目中,还有另一个文件夹包含了大量的实体类扩展方法。 这样做是否正确?我的意思是这两种方法都很好用。当我想要扩展一个类时,您能否给我一些真正...

44得票4回答
C#4中的动态关键字是否支持扩展方法?

我正在聆听一场有关 C#4 的 dynamic 关键字的讲座,我想知道... 这个特性是否会与其他 .NET 特性正交,例如它是否支持扩展方法? public static class StrExtension { public static string twice(this st...

44得票10回答
最佳实践:C#扩展方法命名空间和推广扩展方法

我知道已经有一个帖子,几乎描述了相同的内容,但我认为我的略有不同。 我想知道的是你如何组织你的扩展方法来分配命名空间。目前,对于我们框架中的扩展方法,我使用以下命名空间模式: MyCompany.Web.Utils 在其中我有扩展方法类。这对我来说很好,缺点是扩展程序员不能立即看到扩...

42得票6回答
为什么要使用TagBuilder而不是StringBuilder?

在HtmlHelper类中创建表格时,使用TagBuilder和StringBuilder有什么区别,还是使用HtmlTable呢? 它们生成的不是相同的内容吗?