访问dll方法

Iga*_*gal 1 c# dll encapsulation


我为我的客户准备了一些C#dll来做一些功能.
问题是我也使用相同的DLL.
我怎样才能为他提供一些方法以及所有可用的方法.
谢谢,

Mer*_*ham 5

使用共享代码库

只需编译两个项目.一个包含您提供给客户的DLL的源,另一个包含您自己保留的所有源.

  • 优点:他们没有看到你想为自己保留的源代码,而且你不需要设置任何类型的特殊主机 - 只需向他们发送DLL
  • 缺点:您必须做额外的工作才能将代码库设置为可分叉.做这种重构可能是一项巨大的开发投资.

提供Web服务

为客户提供Web服务以访问允许他们访问的代码.

  • 优势:他们根本没有看到任何消息来源.
  • 缺点:根据代码的不同,可能需要做很多工作(以获得安全性),并且可能是不可能的(将性能提升到鼻烟).或者它可能很容易,因为这些可能不是很大的问题.您还必须设置专用主机才能使用.

使用InternalsVisibleTo共享DLL中的属性

  1. 标记您要使用的方法 internal
  2. 代码签署您自己的使用DLL的代码
  3. 代码签署共享DLL
  4. 添加[assembly: InternalsVisibleTo]到共享DLL

请参阅:http://msdn.microsoft.com/en-us/library/system.runtime.compilerservices.internalsvisibletoattribute.aspx

  • 优点:这是一个非常简单的代码解决方案
  • 缺点:客户端可以通过Reflector访问完整的源代码.您可以通过混淆代码或设置合法禁止他们对代码进行反向工程的许可协议来缓解此问题.