如果在代码中的任何地方使用特定的外部函数,则在编译时抛出错误?

时间:2014-10-01 01:05:46

标签: c# .net visual-studio

我正在使用外部库,我想确保我从不调用库中的某些特定函数。我没有该库的源代码所以我想确保在编译时如果我偶然(或我的一个开发人员)使用该函数,它会抛出错误。有没有办法做到这一点?

2 个答案:

答案 0 :(得分:4)

您无法轻松 。您可以将方法标记为过时,但当然需要访问外部库源代码,此时您也可以删除方法。

我能想到的最好的事情是围绕库对象构建一个外观:

public class LibraryFacade
{
    //All the library methods as pass-through methods
    //Except the bad ones!
}

当然,您的开发人员必须实际使用外观才能提供帮助。如果您根本不信任它们,您可以获得新的开发人员,或将外观放在单独的程序集中,这样客户端代码就无法直接访问外部库。

显然,这类功能需要做很多工作,但它会让你到达目的地。

答案 1 :(得分:1)

如果你有足够的额外时间,你可以克隆外部程序集,并使用相同的方法签名而不是真正的方法签名链接到精简版本,并在运行时/后编译时替换为真正的程序集。对于非签名程序集很容易,我认为如果使用延迟签名功能对其他程序集进行签名,您甚至可以这样做。

好处:完整的intellisence / refactoring支持,完美的构建错误。

缺点:如果库使用大量依赖关系,选择正确的方法子集可能会非常痛苦,获得100%的奇偶校验可能很难。