繁体   English   中英

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

[英]how to dynamical pass generic-type same as type of parameter?

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM