C#多处调用接口、仅一个回调方法的处理思路
来源:互联网 发布:单机成本核算软件 编辑:程序博客网 时间:2024/05/22 08:09
最近做项目时,有一个问题,即SDK的接口《获取手柄唯一标识》是异步用回调的方式传回的。
但有关手柄的连接、绑定、解绑等操作都依赖这个接口,回调只有一个,回调里如何处理不同的位置调用,并作出相应操作是重点。
思路1、在回调中加入判断
在全局设置int型变量,每当有需要调用接口时,为int变量赋值,在回调中判断该变量,分别处理。
public int type=-1;public void GetIDCallback(string id) { string s = id; Debug.Log("伊沢ライオン,type:" + type); if (type== 1){ //初始化时 } else if (type== 2) {//绑定时 } else if (type== 3) {//解绑时 } else if (type==4) {//连接状态回调时 } }
总结:这种方法并不是最优解,因为有大量逻辑代码写在了回调中。属于救急方法,后期一定需要优化。
思路2、利用委托的特性+工厂方法模式生成特定的函数
C#的委托特性,可以解决很多指派型的工作。
如上述例子,不同的地方使用同一个回调函数,不如把每一种情况分别赋予一个委托,调用的位置赋予相应的委托即可。
public void GetIDCallback(string id) { if (ClickTestEvent != null) BindEvent(id);//绑定时 if (DebugMenuTestEvent != null) UnbindEvent(id);//解绑时 }
那么只需要在需要的地方接入相应的委托就可以了。比如上面写了两个委托,那么就可以用在两个地方,以此类推。
public class TestA{MyUtil.BindEvent+= BindEventCallback; public void BindEventCallback() { Debug.Log("伊沢ライオン,执行BindEventCallback"); }}
public class TestB{MyUtil.UnbindEvent+= UnbindEventCallback; public void UnbindEventCallback() { Debug.Log("伊沢ライオン,执行UnbindEventCallback"); }}
总结:暂时想到可以这样做,避免了在一个回调方法里做过多逻辑操作。不过我觉得可能还有更好的方法。待闲下来再做研究。
阅读全文
0 0
- C#多处调用接口、仅一个回调方法的处理思路
- C# ActiveX调用JS函数的便捷方法与思路
- C# 2005 简短方法实现软件仅打开一个实例的方法
- C#调用URL接口方法
- C# 接口的调用
- 调用多个方法,一个处理函数
- 关于一般处理程序接口的调用的方法
- 接口回调思路
- 关于c#调用DLL的方法,接口,类
- C#调用C接口字符参数编码的问题解决方法
- 接口回调的原理:接口变量 调用 被类实现的接口的方法
- 接口回调的原理:接口变量 调用 被类实现的接口的方法
- 接口回调的原理:接口变量 调用 被类实现的接口的方法
- 一个类继承不同接口存在相同方法的处理
- 根据参数动态加载bean(一个接口多个实现的调用方法)
- asp.net C#调用mencoder处理视频的方法
- C#中一种可调用的异常处理方法
- 多组处理, 仅展开一个区块的折叠效果(原生Js和jQ版)
- 大数据
- holder.js占位图片生成器
- 数据结构实验之排序七:选课名单
- 井字棋展示经典博弈算法——极大极小+负极大
- angularjs增删查,排序,发货
- C#多处调用接口、仅一个回调方法的处理思路
- simhash去重算法实践
- 添加 表单隐藏 变小手 鼠标滑过变色
- 会议记录管理系统(5) -浏览会议记录模块设计
- 大数据
- NLP(二)_汉语言分词技术及最大匹配法
- Jenkins用户权限和角色配置
- 奇异值分解singular values decomposition
- MATLAB 求极限