C# 如何传递与参数类型相同的泛型类型?
我正在尝试这样做:C# 如何传递与参数类型相同的泛型类型?,c#,windows-8,C#,Windows 8,我正在尝试这样做: public static void ShowTaskPane(UserControl type) { var item = set.OfType<typeof(type)>().FirstOrDefault(); } publicstaticvoidshowtaskpane(用户控件类型) { var item=set.OfType().FirstOrDe
public static void ShowTaskPane(UserControl type)
{
var item = set.OfType<typeof(type)>().FirstOrDefault();
}
publicstaticvoidshowtaskpane(用户控件类型)
{
var item=set.OfType().FirstOrDefault();
}
但这不起作用,我想选择类型或传递参数的对象。方法签名,如果需要,我可以更改它,但建议我如何操作?您可以将您的方法定义为:
public static void ShowTaskPane<T>()
{
var item = set.OfType<T>().FirstOrDefault();
}
public static void ShowTaskPane()
{
var item=set.OfType().FirstOrDefault();
}
然后像这样称呼它:
ShowTaskPane<UserControl>();
var item = ShowTaskPane<UserControl>();
ShowTaskPane();
或者,如果假定您的方法返回控件,则:
public T ShowTaskPane<T>()
{
return set.OfType<T>().FirstOrDefault();
}
public T ShowTaskPane()
{
返回set.OfType().FirstOrDefault();
}
可以这样说:
ShowTaskPane<UserControl>();
var item = ShowTaskPane<UserControl>();
var item=ShowTaskPane();
评论:我是否可以将T的类型限制为
UserControl的子类型
可以指定约束,如下所示:
public T ShowTaskPane<T>() where T : UserControl
{
return set.OfType<T>().FirstOrDefault();
}
public T ShowTaskPane(),其中T:UserControl
{
返回set.OfType().FirstOrDefault();
}
谢谢,但是我是否可以将T类型限制为UserControl的子类型?