.如果要用别人dll中的接口,以此来调用别人的服务(别人的服务必须是开启的,而且要能通过expo服务调用到),应该如何做?
1.首先将别人的dll引用到自己的项目中来(添加引用即可)
2.然后将别人的接口添加到项目的apidefine.xml中去,例如:ExpoBuildApiDefine.BuildApiDefineFile(new List<Type>(){ typeof(IConfigManager)});
3.新建.cs文件,定义类ConfigServer,定义接口:static IConfigManager _configManager;
4.定义静态构造方法:static ConfigServer(){ InitInterface(); }
5.初始化接口:public static void InitInterface(){ _configManager = Expo.CreateInstance<IConfigManager> (); }
6.定义公共属性,可以给外部使用:public static IConfigManager Config{ get{ return _configManager; } }
7.比如在本类ConfigServer中定义个方法访问此引用的dll的方法QueryConfig:
public static List<xxxEntity> QueryCommonConfig( long xxx, string[] xxxx) { ExpoReturnMessage<ConfigItemEntity> result = new ExpoReturnMessage<ConfigItemEntity>;
response = Config.QueryConfig(xxx, xxxx); .....}
这里的Config就是上面定义的公共静态属性,如果在其他类中需要调用此方法,那就用ConfigServer.Config.QueryConfig(xxx, xxxx); 就可以了
注意:所有方法和属性以及字段都要用static静态,因为实例在别人的服务里面,本地的方法和属性就不能是实例的方式,而是静态的方式
关于第7步的说明:如何判定expo返回成功
if(response.IsSuccess() && response.Content.Data != null)
{ if(response.Message.Code == 1) { .........//进到这里表示调用成功并有返回 }
else { .......//调用到服务了,但是出错了}
}
else
{ .......//没有调用到服务}