接口,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
写一个类继承接口,比如Ajax的回调,那不是每次要Ajax的请求都要写一个继承类?继承类就会变得无比的多~
#3
在c#中使用匿名delegate
public delegate void Callback(object args);
obj.Invoke(Callback callback);
这样用:
obj.Invoke(new Callback(delegate(object args){
// do something
}));
public delegate void Callback(object args);
obj.Invoke(Callback callback);
这样用:
obj.Invoke(new Callback(delegate(object args){
// do something
}));
#4
这个想法对。委托。
而且比Java的形式要简单。
#5
唉,为啥西餐厅就没有臭豆腐买啊,我就好这口
一口红酒,一口臭豆腐,再一口牛排,多滋润啊
一口红酒,一口臭豆腐,再一口牛排,多滋润啊
#6
我记得没做的话Java里面没有委托这个东西所以只能这样玩了
#1
不是太懂楼主的意思,一定要用匿名接口来实现么?直接写一个类继承接口,然后把类当参传入不行么?楼主能不能再说的明白一些。
#2
写一个类继承接口,比如Ajax的回调,那不是每次要Ajax的请求都要写一个继承类?继承类就会变得无比的多~
#3
在c#中使用匿名delegate
public delegate void Callback(object args);
obj.Invoke(Callback callback);
这样用:
obj.Invoke(new Callback(delegate(object args){
// do something
}));
public delegate void Callback(object args);
obj.Invoke(Callback callback);
这样用:
obj.Invoke(new Callback(delegate(object args){
// do something
}));
#4
这个想法对。委托。
而且比Java的形式要简单。
#5
唉,为啥西餐厅就没有臭豆腐买啊,我就好这口
一口红酒,一口臭豆腐,再一口牛排,多滋润啊
一口红酒,一口臭豆腐,再一口牛排,多滋润啊
#6
我记得没做的话Java里面没有委托这个东西所以只能这样玩了