如果BYPH912Z、byph912zslipno、byph912zprdtcode继承自同一个父类(如BYPH),可以使用抽取方法。
if (this.radioButton1.Checked.ToString().ToLower()=="true")
{
BYPH b912z = new BYPH912Z();
XXXX(b912z);
}private void XXXX(BYPH b912z)
{
b912z.SetDataSource(dt);
report rpt = new report();
rpt.SetReportSouce(b912z);
rpt.Show();
}或者将上面的XXXX封装到父类里,之所以使用父类而不是接口是考虑父类可以重用代码。
if (this.radioButton1.Checked.ToString().ToLower()=="true")
{
BYPH b912z = new BYPH912Z();
b912z.XXXX(dt);
}
......
class BYPH
{
public void XXXX(? dt)
{
this.SetDataSource(dt);
report rpt = new report();
rpt.SetReportSouce(this);
rpt.Show();
}
}当然使用父类也有一定的危险性,增加一个不支持XXXX()方法的子类是不可能的,如果有这种可能的话可以考虑使用composite模式……,写起来比较麻烦,需要的话可以参考以下《DP》活者《head first design patterns》
if (this.radioButton1.Checked.ToString().ToLower()=="true")
{
BYPH b912z = new BYPH912Z();
XXXX(b912z);
}private void XXXX(BYPH b912z)
{
b912z.SetDataSource(dt);
report rpt = new report();
rpt.SetReportSouce(b912z);
rpt.Show();
}或者将上面的XXXX封装到父类里,之所以使用父类而不是接口是考虑父类可以重用代码。
if (this.radioButton1.Checked.ToString().ToLower()=="true")
{
BYPH b912z = new BYPH912Z();
b912z.XXXX(dt);
}
......
class BYPH
{
public void XXXX(? dt)
{
this.SetDataSource(dt);
report rpt = new report();
rpt.SetReportSouce(this);
rpt.Show();
}
}当然使用父类也有一定的危险性,增加一个不支持XXXX()方法的子类是不可能的,如果有这种可能的话可以考虑使用composite模式……,写起来比较麻烦,需要的话可以参考以下《DP》活者《head first design patterns》
解决方案 »
- 我写的一段sql语句在SQL中显示,在C#的界面也显示,但是到了查询的时候,却提示错误!!急急
- image 本身二进制 与 存入数据库中 二进制 不相等 求解
- C#后台,xml节点中,如何查找一个指定节点然后添加一个属性和值呢?如下,如何直接在parameter添加一个modifyvalue=‘1’这样的呢。
- 有 “酷讯” 网的效果引起的想法,想用C#实现,请朋友给点思路。
- C#里,点击按钮后,如何生成一个主窗口?
- 做收邮件的问题?
- 初学求教:分析器错误信息: 未能加载类型“Default”。
- linq to sql 继承
- 哪位有将数据库读入TreeView的经验吗??
- 收集WINRAR制作自解压安装包技术大全
- SOS SOS SOS,c#找不到程序集,怎么回事?
- 转换数据类型
public class B
{
public virtual void SetReportSouce(DataTable dt)
{
}
} public class B1 : B
{
public override void SetReportSouce(DataTable dt)
{
}
} public class B2 : B
{
public override void SetReportSouce(DataTable dt)
{
}
}
=====================================
public void TestMethod(string className)
{
Assembly assembly = Assembly.Load("NameSpace");
Type type = assembly.GetType(className); B b = (B)Activator.CreateInstance(type);
b.SetReportSouce(dt);
report rpt = new report();
rpt.SetReportSouce(b);
rpt.Show();
}
然后根据不同的情况,把命名空间 + 不同的类名作为参数,传到上面的方法。
这样调用:TestMethod("NameSpace.B1")
TestMethod("NameSpace.B2")