利用虚拟方法和反射简化Alisoft API的调用

最近一直在研究Alisfot api,他的文档和帮助都让我很郁闷,可能是第一次做这种开放api的程序吧.为了简化那些烦人的参数和返回值的调用,可以利用.net的匿名委托和反射机制来达到目的,简化后代码可以如下所示:

/// <summary>

/// 此接口方法以实现得到前台展示的店铺内卖家自定义商品类目。

/// </summary>

/// <param name="Nick"></param>

/// <returns></returns>

public List<SellerCat> sellercats_list_get(string Nick)

{

SellerCatsPar parSL = new SellerCatsPar();

parSL.sip_sessionid = sip_sessionid;

parSL.nick = Nick;

return APIUtils.Result<List<SellerCat>>(parSL, (string result) =>

{

NameValueCollection par = new NameValueCollection();

par.Add("ID", "cid");

par.Add("Name", "name");

par.Add("ParentID", "parent_cid");

return new XmlHandler<SellerCat>().ListItemByXml(result, "rsp/seller_cat", par);

});

}

现在是不是简单明了,只要关注于业务就可以啦.

   

第一次用office发文章,太晚了先发一点内容测试测试.:-)

据说 还能贴图 试试

图一

图一为阿里的API文档菜单,我看了一星期,硬没找到他的api列表(中间一直在看百度搜索到的一个老界面).今天才搞明白,原来我一直在点右边红框的文字部分,他的内容竟然也变,但是树形菜单不会下拉.只有再点左边的图片才可以.也可以说是我智商的问题,但这里面也有一个用户体验的问题.在做系统的时候会习惯的认为用户会按照自己的思维做事情,往往一个简单的东西,不同的人就会得到不同的结果.比如这个问题.如果不是因为我继续关注,阿里的这个api我肯定会以为他没提供而放弃找其他的啦.

posted @ 2008-11-21 00:17 午夜瞎想 阅读(1784) 评论(8)  编辑 收藏 所属分类: alisoft api

  回复  引用  查看    
#1楼2008-11-21 01:34 | 刘守照      
luck context
  回复  引用    
#2楼2008-11-21 09:46 | boygod[未注册用户]
感谢你对阿里软件API 的关注和思考

最后API列表那里的用户体验确实需要改进,如果你有好的建议,可以发我邮箱,我们交流讨论一下
bo.yb@alibaba-inc.com

  回复  引用  查看    
#3楼2008-11-21 10:10 | 海边的风      
楼上是间谍啊,这么快就到了,上回我研究的时候也这样,烦人,难道不能做成标准chm格式提供下载么。
  回复  引用  查看    
#4楼2008-11-21 10:47 | zoti      
哈,和我的代碼差不多,不過,我的比你的更精簡。
我也做了一個 aliapi的.net assembly.

  回复  引用  查看    
#5楼[楼主]2008-11-21 11:04 | 孙孟      
--引用--------------------------------------------------
zoti: 哈,和我的代碼差不多,不過,我的比你的更精簡。
我也做了一個 aliapi的.net assembly.
--------------------------------------------------------
同享的目的就是集思广益找到更好的方法
希望能看到你的思路

  回复  引用  查看    
#6楼2008-11-22 16:18 | zoti      
我的代碼片斷:

[AliMethod("taobao.user.get", 3)]
public static CallResult<TaobaoUser> GetUser(string nick)
{
AliMethod method = AliAPI.GetMethod();
method.Parameter.Add("nick", nick);
method.Parameter.Add("fields", Utility.Join(Utility.GetMember("", typeof(TaobaoUser), true), ","));

return method.Invoke<TaobaoUser>();
}


原計划是做一套比較完整的alisoft api for .net組件的,工作比較忙沒太多時間,等有時間的時候再把整套程序公布給大家。

  回复  引用  查看    
#7楼2008-11-22 16:27 | zoti      
找了一個與你寫的sellercats_list_get(string Nick) 相應的方法:

[AliMethod("taobao.sellercats.list.get", 1)]
public static CallResult<SellerCat[]> GetSellerCatsList(string nick)
{
AliMethod method = AliAPI.GetMethod();
method.Parameter.Add("nick", nick);

return method.Invoke <SellerCat[]>();
}
是不是更精簡一些呢?我也是利用反射來實現的。

  回复  引用  查看    
#8楼[楼主]2008-11-22 21:48 | 孙孟      
--引用--------------------------------------------------
zoti: 找了一個與你寫的sellercats_list_get(string Nick) 相應的方法:

[AliMethod(&quot;taobao.sellercats.list.get&quot;, 1)]
public static CallResult&lt;SellerCat[]&gt; GetSellerCatsList(string nick)
{
AliMethod method = AliAPI.GetMethod();
method.Parameter.Add(&quot;nick&quot;, nick);

return method.Invoke &lt;SellerCat[]&gt;();
}
是不是更精簡一些呢?我也是利用反射來實現的。
--------------------------------------------------------
多谢,非常棒,学习啦. 有机会多交流

发表评论

昵称: [登录] [注册]

主页:

邮箱:(仅博主可见)

评论内容:

  登录  注册

[使用Ctrl+Enter键快速提交评论]

0 1338065




相关文章:

相关链接: