我在这里有一个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;
}
}
现在当我将其转换为通用方法时。我得到编译时错误。 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;
}
}
如何解决此问题的任何想法?
答案 0 :(得分: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;
}
甚至更好
public static T SetToolTip<T>(
this T element, object value)
where T : System.Windows.DependencyObject
{
System.Windows.Controls.ToolTipService.SetToolTip(element, value);
return element;
}
(不确定最后一个;编辑:检查,它有效。)
答案 1 :(得分:1)
您似乎只是返回输入元素,因此您应该能够将方法更改为:
public static T SetToolTip<T>(this T element, object value) where T : DependencyObject
{
ToolTipService.SetToolTip(element, value);
return element;
}