我有这样一段代码
......//省略
if(cl is Lable)//如果foreach里的cl 是标签的话
{
aa();
}
if (cl is button)//如果是按钮的话
{
aa();//由于方法aa 一样 我想优化简练代码
}
我想用方法的参数来写
void 判断控件方法(控件类型 c_l)
if(cl is c_l)
{
aa();
}
要实现如上的效果 参数如何写呢 是 object 还是 class呢?
......//省略
if(cl is Lable)//如果foreach里的cl 是标签的话
{
aa();
}
if (cl is button)//如果是按钮的话
{
aa();//由于方法aa 一样 我想优化简练代码
}
我想用方法的参数来写
void 判断控件方法(控件类型 c_l)
if(cl is c_l)
{
aa();
}
要实现如上的效果 参数如何写呢 是 object 还是 class呢?
...
{
aa();
}
void 判断控件方法(object c_l)
private bool compareType(Type targetType, object con)
{
if (con.GetType().Equals(targetType))
{
return true;
}
else
{
return false;
}
}Button btn1 = new Button();
bool check1 = compareType(typeof(Button), btn1);不过这样子没有什么优势
{
if (con.GetType().Equals(targetType))
{
return true;
}
else
{
return false;
}
}
这样写很蛋疼private bool compareType(Type targetType, object con)
{
return con.GetType().Equals(targetType);
}
就行了。
比如你的东西最简单的解法if(checkType(obj))一个checkType方法就ok,如果你说你不想修改。ok把checktype提到外面去。把类型判定放到配置项里,把操作丢到委托里都ok。这里千万别对象,一对象你就要去抽象工厂,就要去策略。这就过了,开始镀金了
[Quote=引用 8 楼 的回复:]
private bool compareType(Type targetType, object con)
{
if (con.GetType().Equals(targetType))
{
// 添加代碼
return true;
}
else
{
// 添加代碼
return false;
}
}
if(c_l.IsAssignableFrom(cl.GetType()))
{
aa();
}如果你不考虑继承关系,那么可以这样写: void 判断控件方法(Type c_l)
if(c_l==cl.GetType())
{
aa();
}