我当前正在使用Devexpress
控件在使用Web表单应用程序。我正在使用的控件是(但不限于):
表格相当大,所以我想要实现的是例如IEnumerable<T>
,然后遍历集合并将ReadOnly
属性设置为true
。我知道我一次可以做一个控件,但是我有50多个控件,所以我想知道是否有更通用的方法。
我有以下代码段:
public static void MakeControlReadOnly<T>(this IEnumerable<T> controlCollection)
{
foreach(var c in controlCollection)
c.ReadOnly = true;
}
但是我不断收到错误消息:
严重性代码描述项目文件行抑制状态 错误CS1061'T'不包含'ReadOnly'的定义,找不到可以接受类型为'T'的第一个参数的扩展方法'ReadOnly'(您是否缺少using指令或程序集引用?)
我了解该错误,但不确定如何解决。
答案 0 :(得分:3)
尝试将隐式类型T
用作ASPxEditBase
的基础DevExpress
public static void MakeControlReadOnly<T>(this IEnumerable<T> controlCollection)
where T: ASPxEditBase
{
controlCollection.ToList().ForEach(x=> x.ReadOnly = true);
}
答案 1 :(得分:2)
您可以对包含readonly属性的基类的泛型施加类型约束
public static void MakeControlReadOnly<T>(this IEnumerable<T> controlCollection) where T: BaseType //Set this to the correct base type
{
foreach(var c in controlCollection)
c.ReadOnly = true;
}