40、C#:如何调用外部dll的接口

时间:2022-08-31 09:15:44

.如果要用别人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

{   .......//没有调用到服务}