定义两接口Uo1:UO;
Uo2:UO;
注意,在UO中增加一方法,发现到底是谁(uc1 or uc2);
UO.GetObject();
然后就简单了。
public class uc1 :uo
{
public String GetObject()
{
return "U1";
}
........
}
public class Uo2:Uo
{
public string GetObject()
{
return "u2";
}
}
然后你调用Uo的GetObject()方法,根据返回的字符串,不就知道具体对象是Uo1 or Uo2了。
Uo2:UO;
注意,在UO中增加一方法,发现到底是谁(uc1 or uc2);
UO.GetObject();
然后就简单了。
public class uc1 :uo
{
public String GetObject()
{
return "U1";
}
........
}
public class Uo2:Uo
{
public string GetObject()
{
return "u2";
}
}
然后你调用Uo的GetObject()方法,根据返回的字符串,不就知道具体对象是Uo1 or Uo2了。
解决方案 »
- 导出身份证号码是出错
- 本地exe程序如何获取其他程序中传过来的参数
- [求助]生成EXCEL文件!
- 如何获得系统中有新的mp3或优盘插入的消息,并把这个消息删除
- 使用C#如何获取本机另一个用户的HKEY_CURRENT_USER注册表?
- 如何获取exchange一个用户的邮箱总的容量?
- 关于多线程的基本问题~
- 关于MSChart用法
- 用installshield LE制作vs2012安装程序的问题
- 在windows server 2008 R2 64位的系统上放了一个服务程序,客户端访问服务程序的时候需要通过8012端口访问,但是在防火墙中将8012端口打
- c#中连接dbf格式文件出错!为什么会这样?(odbc.net)
- 如何在另一个线程中运行一个窗体
------- ------------
UC1重写UO1 UC2重写UO2
------- ------------具体借鉴泛型思想,binbin2000(binbin)得方法也不错,很实用
UC2 uC2;
UContainer uCurrentContainer = uC1; (or uC2)
uCurrentContainer.Op(); ( Op() inside UO1+UO2 ) 这样虽然不好,但是外部能通过一个统一的uCurrentContainer来访问所有的UContainer子类。
//类的设计
public interface UO
{
String AddInstance(); String DeleteInstance();
}public class UC1:UO
{
#region UO Members
public String AddInstance()
{
return "New a instance,it's type is UC1";
}
public String DeleteInstance()
{
return "Delete a instance,it's type is UC1";
}
#endregion
}
public class UC2:UO
{
#region UO Members
public String AddInstance()
{
return "New a instance,it's type is UC2";
}
public String DeleteInstance()
{
return "Delete a instance,it's type is UC2";
}
#endregion
}
public class UCFactory
{
public String AddNewInstance(UO instance)
{
String strReturn=null;
if(instance is UC1)
{
UC1 a=(UC1)instance;
strReturn=a.AddInstance();
}
if(instance is UC2)
{
UC2 b=(UC2)instance;
strReturn=b.AddInstance();
}
return strReturn;
}
}
//调用代码
UCFactory factory=new UCFactory();
UC1 uc1=new UC1();
UC2 uc2=new UC2();
MessageBox.Show(factory.AddNewInstance(uc1));
MessageBox.Show(factory.AddNewInstance(uc2));
UC1 uC1 = new UC1();
UC2 uC2 = new UC2();
UContainer uCurrentContainer = uC1;
uCurrentContainer.DoSomethingInInterfaceUO1();
uCurrentContainer = uC2;
uCurrentContainer.DoSomethingInInterfaceUO2();是不是Facade模式?
{
string One();
} public interface UO1
{
string One();
void Two();
} public interface UO2
{
string One();
void Three();
} public class UC1:UO1,UContainer
{
public string One()
{
return "OneOfUC1";
} public void Two()
{
}
} public class UC2:UO2,UContainer
{
public string One()
{
return "OneOfUC2";
} public void Three()
{
}
}
}调用时:
UC1 uc1=new UC1();
UC2 uc2=new UC2();
UContainer uc=uc1;
MessageBox.Show(uc.One());
UContainer uc=uc2;
MessageBox.Show(uc.One());OK了。不过继承多接口不是太好,但就这个问题还是可以解决的。
hai4(敏敏),UContainer uc=uc2;无法调用UC2.Three()吧。