当前位置:  开发笔记 > 编程语言 > 正文

你如何知道一个控件是否来自一个类

如何解决《你如何知道一个控件是否来自一个类》经验,为你挑选了1个好方法。

我有一个控件列表(_controlList),从控件列表中我想得到从给定类派生的控件.所以我的代码看起来像这样.

List _controlList = new List();

public Control[] ControlsThatIsA(Type soughtType)
{
  List result = new List();
  foreach (Control control in _controlList)
  {
// This would have been nice but doesn't compile
//////////////
//  if (control.GetType() is soughtType)
    {
      result.Add(control);
    }
  }
return result.ToArray();
}

有什么想法吗.我没有传入Type,它可能是类的字符串名称



1> Marc Gravell..:

首先,我可能会使用泛型:

public T[] ControlsOfType() where T : Control
{
  List result = new List();
  foreach (Control control in _controlList)
  {
    if (control is T)
    {
      result.Add((T)control);
    }
  }
  return result.ToArray();
}

或者在.NET 3.5中:

return _controlList.OfType().ToArray();

如果你需要使用Type,那么IsAssignableFrom特别是你的朋友:

if(soughtType.IsAssignableFrom(control.GetType())) {
   //...
}

推荐阅读
TXCWB_523
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有