我正在尝试做这样的事情:
public static void ShowTaskPane(UserControl type)
{
var item = set.OfType<typeof(type)>().FirstOrDefault();
}
但这不起作用,我想选择类型的对象或传递的参数。方法签名,如果需要,我可以更改它,但建议我怎么做?
您可以将方法定义为:
public static void ShowTaskPane<T>()
{
var item = set.OfType<T>().FirstOrDefault();
}
然后像这样称呼它:
ShowTaskPane<UserControl>();
或者,如果您的方法假设返回控件,则:
public T ShowTaskPane<T>()
{
return set.OfType<T>().FirstOrDefault();
}
像这样称呼它:
var item = ShowTaskPane<UserControl>();
评论:无论如何我可以将 T 的类型限制为 UserControl 的子类型吗?
您可以指定约束,如:
public T ShowTaskPane<T>() where T : UserControl
{
return set.OfType<T>().FirstOrDefault();
}