我有多个类ClassA,ClassB,ClassC.....在这些类里面都有个名为Out...(比如说OutVoyage)函数,且结构相似,现在我想在这里类传递一个参数到主类里(且认为是MainClass吧),这样主类就知道将要调动哪个类里的Out...方法,如何做呢?不能用枚举!
解决方案 »
- 如何实现判断数据库是否存在,不存在则自动创建
- 如何把图片资源编译在exe文件中?
- C#.Net 建立 dll, visual studio 中报错 “;expected”
- 网站问题
- 尝试读取或写入受保护的内存。这通常指示其他内存已损坏。
- 求助C#发送XML数据的问题!!
- 关于SQL server managment studio express
- 求 WebService 性能数据(可同时连接数量,并发请求数量) 谢谢
- ado中 rs!["name"]的存取数据的方法在ado.net中是否有类似的
- C#中怎么对TextBox内容进行判断?
- C# XmlTextReader怎么读指定的xml节点
- 在c#后台代码中生成了一个可编辑的datagrid 怎么获取不到其中的输入值呢?
{
private void OutputA()
{.... }
....//调动 MainClass中的方法do()的函数。
}
ClassB
{
private Void OutputB()
{....}
...//调动 MainClass中的方法do()的函数。
}
ClassMain
{
private void do()
{
if ClassA中的某个方法方法调动我,我去处理ClassA中的方法OutputA()。
如果ClassB中的某个方法调用了我,则处理ClassB中的方法OutputB()。
}}
假如你的Output()里面可能需要调用到相同的方法,你应该让3个类继承同个父类,然后重载父类的方法.再实现各自需要的其余功能.
即使用你的方法去实现,也必须要有参数来让被调用的类知道.
{
void Output();}
Class A
{
private void Output()
{.... }
void s()
{
ClassMain m=new ClassMain()
m.do(this);
}}
ClassB
{
private Void Output()
{....}
void s()
{
ClassMain m=new ClassMain()
m.do(this);
}}
ClassMain
{
private void do( iclass cla)
{
cla.Output();
}}你看是这个意思吗?
interface iclass
{
void Output();}
Class A:iclass
{
private void Output()
{.... }
void s()
{
ClassMain m=new ClassMain()
m.do(this);
}}
ClassB:iclass
{
private Void Output()
{....}
void s()
{
ClassMain m=new ClassMain()
m.do(this);
}}
ClassMain
{
private void do( iclass cla)
{
cla.Output();
}}
我想在ClassA,ClassB等等类在调用ClassMain的do()方法时,将ClassA,ClassB等等类中的OutputA,OutputB等方法传过去ClassMain中去,我知道在C++里可以通过调用相一个函数指针去实现,C#中不知如何实现。
...
private void do(OutVoyageDelegate method)
{
...
method(...参数....);
...
}
...
...
主程序中,使用任意对象的方法作为参数去调用do,编译器会检查方法ClassA、ClassB、ClassC中OutVoyage方法签名与 OutVoyageDelegate 的签名是否一致。例如:
ClassA a=new ClassA();
do(a.OutVoyage);
ClassB b=new ClassB();
do(b.OutVoyage);
...
}
不过,如果可能,让他们具有相同的父类或者接口,找出多态的逻辑含义,则有更好的设计优势。
OutVoyageDelegate call=a.OutVoyage;
ClassB b=new ClassB();
call+=b.OutVoyage;
do(call);