0

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

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

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

4

1 回答 1

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();
}
于 2013-04-25T11:48:18.093 回答