我创建了一个工厂程序集,可以处理任何类型的事务(支持ITransactionType
)。我可以在单独的程序集中添加更多的事务类型,所有这些类型都可以在工厂工作,而无需重新编译(这是工厂的好处之一)。
这里有一个可以处理的事务类型的实际列表,因此我用const字符串定义了一个静态类,该类保存在单独的程序集中。其他程序集引用了此名称,以确保一致的事务类型名称。工厂不需要引用该程序集,因为它不需要知道,这将导致该项目的不必要的编译。
所有这些都很好。我永远不会在工厂项目中引用主列表程序集,因为它知道这没有任何意义。
但是,我担心如果该项目是由不了解所有这些内容的人来维护的,他们可能会错误地将引用添加到主列表程序集中。有什么方法可以防止添加此引用? IOW,如果有人(也许将来甚至是我自己)添加了引用,我是否可以通过某种方式强制执行编译错误,以指出为什么该行为 Not Acceptable 原因?
最佳答案
我可以想到几种方法,尽管据我所知,语言(.net,C#,vb)没有提供特定的方法:
#warning
,该代码始终发出:“不应使用XXX编译”,请确保它不在其中。” Transaction
工厂的引用,这将有效地防止以其他方式添加引用。 cctor
(静态构造函数)中引用的存在,如果发现,则抛出异常。如果有人试图添加对该库的引用,这将引发硬异常(但仅在任何测试中)。 MustNotReferenceXXX
,并在其主体中动态检查是否引用了lib。 如果可以想到更简单的方法,我将进行更新,尽管我认为第5点和第6点最容易实现,并且很容易被证明。
关于.net - 阻止将特定的程序集添加到我的工厂项目中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1742456/