将扩展方法转换为泛型方法时发生编译时错误

2 c# silverlight

我有一个extension像这样的方法:

public static class Extensions
{
    public static System.Windows.DependencyObject SetToolTip(this System.Windows.DependencyObject element, object value)
    {
        System.Windows.Controls.ToolTipService.SetToolTip(element, value);
        return element;
    }
}
Run Code Online (Sandbox Code Playgroud)

现在当我将其转换为通用方法时.我得到编译时错误.Error 1 Cannot convert type 'System.Windows.DependencyObject' to 'T' Extensions.cs 149 16

public static class Extensions
{
    public static T SetToolTip<T>(this System.Windows.DependencyObject element, object value)
    {
        System.Windows.Controls.ToolTipService.SetToolTip(element, value);
        return (T)element;
    }
}
Run Code Online (Sandbox Code Playgroud)

任何想法如何解决这个问题?

Vla*_*lad 6

public static T SetToolTip<T>(
       this System.Windows.DependencyObject element, object value)
       where T : System.Windows.DependencyObject
{
    System.Windows.Controls.ToolTipService.SetToolTip(element, value);
    return element as T;
}
Run Code Online (Sandbox Code Playgroud)

甚至更好

public static T SetToolTip<T>(
       this T element, object value)
       where T : System.Windows.DependencyObject
{
    System.Windows.Controls.ToolTipService.SetToolTip(element, value);
    return element;
}
Run Code Online (Sandbox Code Playgroud)

(不确定最后一个;编辑:检查,它的工作原理.)