.net(2003)里有两个工程甲和乙
甲工程中有类A,乙工程有类B和C
在类A中根据一个参数调用B对象和C对象的同名方法,
B bb = new B();
C cc= new C();
if(pp==1)
{
bb.mmm();
}
else
{
cc.mmm();
}
以后根据实际需要,可能会调用多个类,有没有办法可以避免改A类中的代码,不用再添加类似
else if(pp==3)
{
dd.mm();
}
,
使用反射行吗?System.Reflection,但是效率太低啊
有没有好的思路?
甲工程中有类A,乙工程有类B和C
在类A中根据一个参数调用B对象和C对象的同名方法,
B bb = new B();
C cc= new C();
if(pp==1)
{
bb.mmm();
}
else
{
cc.mmm();
}
以后根据实际需要,可能会调用多个类,有没有办法可以避免改A类中的代码,不用再添加类似
else if(pp==3)
{
dd.mm();
}
,
使用反射行吗?System.Reflection,但是效率太低啊
有没有好的思路?
IProject xx = ProjectDelegate.returnDelegate(pp);
然后在这个里面专门些判断:-)
这样就把业务给分离出来了
class A
{
public abstract void mmm();}class B:A
{
public void mmm()
{
//do something
}
}class C:A
{
public void mmm()
{
//do ...
}
}使用如:
A a = new B();
a.mmm();
有个疑问
那我是不是还要:
H h;
if(pp==1){
h = new B();
}
else if(pp==2){
h = new C();
}
那这样不是还一样吗?以后添加新类,不是还要添加A类中的代码呢
你的意思是不是:
H h;
if(pp==1){
h = new B();
}
else if(pp==2){
h = new C();
}
h.mmm();
就是说实际上要靠参数来判断是是实例化B还是C