【高分悬赏 - C#.NET(c#.net)】API开发,多个程序集的问题。

[复制链接]
查看11 | 回复5 | 2011-8-24 14:52:53 | 显示全部楼层 |阅读模式
我现在需要开发一些接口给别的程序员使用。假设我有一个a.dll和一个b.dll,a引用了b。我只希望对方调用a.dll中的类和方法,而不希望也不可以让他看到b.dll中的东西,请问该怎么做?在线等!
追加悬赏,另外,不是看到b.dll的实现,而是不允许调用b.dll中的方法。
完美解决的话,继续提高悬赏!!!
加到200分了,到顶了...期待有个简单的解决方法!

回复

使用道具 举报

千问 | 2011-8-24 14:52:53 | 显示全部楼层
如果不希望他们调用那就别让他们引用,如果a能引用b,那么其他项目引用了b的话自然也能调用。有一种比较好的办法就是封装成服务,用WCF做。b中定义接口,a实现b的接口,然后加入一个服务层,用服务契约暴露你想提供给别人使用的操作,但服务契约不能等同于a中的方法,只是提供一个服务接口可以间接调用a中的方法。再开发一个用于托管服务的宿主进程,如果服务器用的是2008系统,也可以用II7发布服务,不建议使用IIS6。任何人想使用a中的方法都必须引用服务器上的这个服务,但是不要把a.dll和b.dll交给任何人,也就是说他们没办法在项目中直接引用。...
回复

使用道具 举报

千问 | 2011-8-24 14:52:53 | 显示全部楼层
a是接口引用b是实现接口的是吧? 那你让他们实例化的时候直接实例a引用不就可以了,那样的话他们只能看到a接口 而看不到b的实现...
回复

使用道具 举报

千问 | 2011-8-24 14:52:53 | 显示全部楼层
直接给他调用即可。方法修饰符为public,需要对方引入你程序集的命名空间。a.dll如果有外部依赖,需要把其他所依赖的dll一起引用。调用者不经过反编译是看不到你怎么实现的。...
回复

使用道具 举报

千问 | 2011-8-24 14:52:53 | 显示全部楼层
在b调用a的方法之前先用下面的语句在AppDomain中设置一个key,AppDomain.CurrentDomain.SetData("Key", "xxxxxxx");在a执行这个方法之前先从AppDomain中取得这个数据,string key = Convert.ToString(AppDomain.CurrentDomain.GetDa...
回复

使用道具 举报

千问 | 2011-8-24 14:52:53 | 显示全部楼层
C# dll 加壳...
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行