日期:2014-05-18  浏览次数:20805 次

如何封闭DLL中的方法,使其对外不可见
我用c#做开发,之前员工留下的一个dll,有源代码,里面定义了很多底层的函数和接口。

现在我需要另外写一些函数,来调用这些接口,而让原来的接口对外部不可见。

我目前想到了两种方案:

1、在原dll中,加一个class,访问权限为public,其它原来的类和函数全部用private
但原来的代码非常庞杂,里面又有抽象类和接口,我试着修改了几个,报了一大堆“xx.xx的访问权限比xx还低”,小弟才疏学浅,不具备维护能力,而且代码量很庞大,修改起来非常耗时,而且容易出错。

2、另外建一个类库,引用这个dll
但编译出来是两个dll,外部调用的时候,如果调用a.dll,还是可以直接操作底层的函数。

请问各位高手,有没有其它好的解决方法?或者前两种方法可行,只是我操作方式有误?多谢指教

------解决方案--------------------
楼主还不知道吧,用C#生成的dll文件不是真正意义上dll,只要用reflector打开这个dll文件,源代码就一览无遗了。当然这个也是.net程序集的通病了。
目前保护.net代码的方法通常有混淆和加密等。要想让别人看不见dll里面的方法,几乎是不可能的了。就算你混淆后又加密那方法名还是可见的。最主要的是将关键的代码隐藏或加密才有一定的保障。