C#接口匿名对象问题~高手请进(回调),高手最好也精通Java

时间:2021-06-14 11:26:50
Java的写法
接口,Interface IA{
  bool methodA();
  void methodB();
  //......
}

具体操作的类
class Manager(){
   public void methodProcess(IA iA){
       if(iA.methodA()){
         //XXXXX
  iA.methodB();
        }
   }
}
调用端
class Customer(){
    public static void main(){
       Manager m = new Manager();
       m.methodProcess(new IA(){
          @Override
          public bool methodA(){
               //XXXX
           }
@Override
          public void methodB(){
               //XXXX
           }
        }

    }
}
------------------------问题--------------------------------
m.methodProcess(new IA(){
          @Override
          public bool methodA(){
               //XXXX
           }
@Override
          public void methodB(){
               //XXXX
           }
        }
这个是关键,在.net不能这样用,就是匿名创建一个接口对象
-------------------期望目标-------------------------
Manager是某种操作或算法,依懒于Customer端的具体的某些行为,所以Customer要调用Manager时必须传入Customer特定的行为,Customer类会有很多很多~~~,就像Ajax的回调一样,每个调用Ajax的成功或失败它所要做的事情肯定是不一样的,而调用Ajax在一个普通的网站上是多如牛毛~~

分数不够,只能给这么点-_-!!!

6 个解决方案

#1


不是太懂楼主的意思,一定要用匿名接口来实现么?直接写一个类继承接口,然后把类当参传入不行么?楼主能不能再说的明白一些。

#2


引用 1 楼 sosoyiyi 的回复:
不是太懂楼主的意思,一定要用匿名接口来实现么?直接写一个类继承接口,然后把类当参传入不行么?楼主能不能再说的明白一些。

写一个类继承接口,比如Ajax的回调,那不是每次要Ajax的请求都要写一个继承类?继承类就会变得无比的多~

#3


在c#中使用匿名delegate 

public delegate void Callback(object args);

obj.Invoke(Callback callback);

这样用:
obj.Invoke(new Callback(delegate(object args){
   // do something   
  
}));

#4


引用 3 楼 pywepe 的回复:
在c#中使用匿名delegate 

public delegate void Callback(object args);

obj.Invoke(Callback callback);

这样用:
obj.Invoke(new Callback(delegate(object args){
   // do something   
  
}));


这个想法对。委托。
而且比Java的形式要简单。

#5


唉,为啥西餐厅就没有臭豆腐买啊,我就好这口

一口红酒,一口臭豆腐,再一口牛排,多滋润啊

#6


引用 4 楼 sunzongbao2007 的回复:
引用 3 楼 pywepe 的回复:

在c#中使用匿名delegate

public delegate void Callback(object args);

obj.Invoke(Callback callback);

这样用:
obj.Invoke(new Callback(delegate(object args){
// do something

}))……


我记得没做的话Java里面没有委托这个东西所以只能这样玩了

#1


不是太懂楼主的意思,一定要用匿名接口来实现么?直接写一个类继承接口,然后把类当参传入不行么?楼主能不能再说的明白一些。

#2


引用 1 楼 sosoyiyi 的回复:
不是太懂楼主的意思,一定要用匿名接口来实现么?直接写一个类继承接口,然后把类当参传入不行么?楼主能不能再说的明白一些。

写一个类继承接口,比如Ajax的回调,那不是每次要Ajax的请求都要写一个继承类?继承类就会变得无比的多~

#3


在c#中使用匿名delegate 

public delegate void Callback(object args);

obj.Invoke(Callback callback);

这样用:
obj.Invoke(new Callback(delegate(object args){
   // do something   
  
}));

#4


引用 3 楼 pywepe 的回复:
在c#中使用匿名delegate 

public delegate void Callback(object args);

obj.Invoke(Callback callback);

这样用:
obj.Invoke(new Callback(delegate(object args){
   // do something   
  
}));


这个想法对。委托。
而且比Java的形式要简单。

#5


唉,为啥西餐厅就没有臭豆腐买啊,我就好这口

一口红酒,一口臭豆腐,再一口牛排,多滋润啊

#6


引用 4 楼 sunzongbao2007 的回复:
引用 3 楼 pywepe 的回复:

在c#中使用匿名delegate

public delegate void Callback(object args);

obj.Invoke(Callback callback);

这样用:
obj.Invoke(new Callback(delegate(object args){
// do something

}))……


我记得没做的话Java里面没有委托这个东西所以只能这样玩了