下面代码的目的是传入一个控件对象(TextBox/button等),再设置其属性。那么应该如何转换对象,以便统一设置对象共同的属性?
public void DoIt(object obj)
{
//如何转换?为避免重复代码,不考虑此方式:((TextBox)obj).Height = new Unit(400);
obj.Height = new Unit(400);
}
public void DoIt(object obj)
{
//如何转换?为避免重复代码,不考虑此方式:((TextBox)obj).Height = new Unit(400);
obj.Height = new Unit(400);
}
解决方案 »
- bmp图片转化为JPEG图片 求教。在线等待
- 股票中计算 macd 的问题
- C#.NET入门
- 有关c# 实现网络搜索引擎调用的类或函数!!!!!!!!!!!!!!!!!
- 在WinForms里,怎么把DataGrid的列表标题改为中文? 急...!!
- 怎么给TextBox控件最右边加入一个图片并且添加click属性?类似QQ登陆的那个锁.
- 为什么找不到AxMSHierarchicalFlexGridLib模块,请大虾帮忙,急,搞了好几天也没有解决
- C# 读取xml到dataset
- 怎么修改datagridview列标题的背景颜色和字体颜色?
- 我写的程序, 几乎每个函数都有try ..catch ,被leader说,这样影响效率,尽量不要写。try..catch是不是很费时间呢?
- 如何把文件写入sqlserver数据库?大家没事进来看看,充实下自己.
- socket多文件同时传输
{
Control control = obj as Control;
if (control != null) control.Height = new Unit(400);
}
{
c.Height = 400;
}
{
//如何转换?为避免重复代码,不考虑此方式:((TextBox)obj).Height = new Unit(400);
obj.Height = new Unit(400);
}
----------------------------------------------------看你上面的代码,反回类型为void,而参数是一个object,这种设计不合理,设计一个方法,就应该知道它的返回值类型,如果连设计者都不清楚它具体的返回类型,
这个方法是无意义的。 你的出发点可能是想写一个通用的方法能够设定所有未知Control类型的属性,但参数是OBJECT,告诉人家这个方法接受任意类型的数据,而且没有返回值,这个不符合常理吧??比较好的方案是做一个接口或是抽像类,然后实现或继承这个接口或抽像类。public abstract class MyObject
{
public abstract Control SetMyControl(Control sourceControl);
}
public class TestObject : MyObject
{
public override Control SetMyControl(Control sourceControl)
{
if (Control is TextBox) //你知道你的Control是什么类型
{
TextBox textBox = (TextBox)Control;
//Your Code here
return texBox
}
else if (Control is Repeater)
{
//Your Code here
//return a repeater
}
else return null;
}
}public class SecondTestObject : MyObject
{
public override Control SetMyControl(Control sourceControl)
{
if (Control is CheckBox) //我知道我的Control是什么类型
{
CheckBox checkBox = (CheckBox)Control;
//Your Code here
return checkBox;
}
else if (Control is DataList)
{
//Your Code here
//return a DataList
}
else return null;
}
}
如果每个属性都需要先将传入的对象转换成指定的控件类型,那么重复的代码量会比较大,
现在的想法是要精简一下,避免在判断对象的类型时,重复设置相同的属性,如:if (obj is TextBox)
{
((TextBox)obj).Height = new Unit(400);
((TextBox)obj).Width = new Unit(400);
((TextBox)obj).Text = "文字";
//...其它多个属性
}
if (obj is Button)
{
((Button)obj).Height = new Unit(400);
((Button)obj).Width = new Unit(400);
((Button)obj).Text = "文字";
//...其它多个属性
}是否可以优化一下代码?