如何在泛型集合上创建扩展方法

Posted

技术标签:

【中文标题】如何在泛型集合上创建扩展方法【英文标题】:How to create extension method on generic collection 【发布时间】:2012-03-11 22:41:37 【问题描述】:

我有一个包含 FrameworkElements 的列表,我想创建一个名为 MoveToTop 的扩展方法。所有这一切都会接受一个属于该列表的项目并将其移动到列表的开头。我知道这可以在不使用扩展方法的情况下完成,但我希望它可以作为扩展方法来实现。

我在试图找出创建接受泛型参数的扩展方法的语法时遇到了麻烦。我知道这是不正确的,但如果有人可以告诉我如何实现这一点,我将不胜感激。

public static class Extensions

    public static void MoveToTop(this ICollection<T> sequence)
    
        //logic for moving the item goes here.
    

【问题讨论】:

更多关于泛型方法的信息在这里msdn.microsoft.com/en-us/library/twcad0zb%28v=vs.100%29.aspx:) 【参考方案1】:

您很接近,只需要括号前的方法名称后的&lt;T&gt;。那是放置泛型方法的泛型类型参数列表的地方。它声明方法将接受的泛型类型参数,然后使它们可用于参数、返回值和方法体。

public static class Extensions

    public static void MoveToTop<T>(this ICollection<T> sequence)
    
        //logic for moving the item goes here.
    

【讨论】:

以上是关于如何在泛型集合上创建扩展方法的主要内容,如果未能解决你的问题,请参考以下文章

在泛型方法中返回原始集合类型

C#,如何在泛型方法中访问对象方法

扩展方法泛型委托,的小案例

泛型编程类型约束与软件扩展性--面向可扩展的泛型编程就是面相类型约束编程

无法在泛型方法中将类型更改为可为空

java在泛型方法中使用它(继承)