如何动态传递泛型类型与参数类型相同?

时间:2013-04-25 11:43:48

标签: c# windows-8

我正在尝试做这样的事情:

public static void ShowTaskPane(UserControl type)
        {            
                var item = set.OfType<typeof(type)>().FirstOrDefault();
     }

但这不起作用,我想选择类型的对象或传递参数。方法签名,如果需要,我可以改变它,但建议我怎么做?

1 个答案:

答案 0 :(得分:1)

您可以将方法定义为:

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();
}