我正在创建一个允许您通过标签搜索控件的函数。唯一的参数是标签的名称。它返回带有标记的所有类型T
控件的列表。这就是我所拥有的:
public static List<T> FindWithTag<T>(string tag)
{
List<T> types = new List<T>();
foreach (T type in fm.Controls.OfType<T>())
if (type.Tag == tag)
types.Add(type);
return types;
}
问题是,由于T
是通用变量,因此它没有标记属性。我可以理解为什么,因为可能是int
或string
。如何告诉编译器T
仅用于控件,因此会有一个标记?
提前致谢。
答案 0 :(得分:5)
您可以指定应从中继承T类型的类型。
+^http://abc\.test\.com/profiles/people/[a-zA-Z]+/([1-9]|1[0-9]|20)\.html
顺便说一句,调用foreach局部变量public static T[] FindWithTag<T>(string tag) where T : Control
{
List<T> types = new List<T>();
foreach (T type in fm.Controls.OfType<T>())
if (type.Tag == tag)
types.Add(type);
return types;
}
会使我感到困惑,因为实际上你是通过控件枚举的。所以,它应该是
type
它也适用于 foreach (T control in fm.Controls.OfType<T>())
,实际上是 Control 的列表。有时,单个变量的错误名称会使代码的可读性降低:)