C# 不允许使用给定的.net framework库

C# 不允许使用给定的.net framework库,c#,.net,visual-studio,namespaces,C#,.net,Visual Studio,Namespaces,我有一个程序,我想为文件系统提供一个抽象,以便读取文件、创建目录等的IO操作总是针对通过给定工厂获得的给定实现执行 例如,您需要访问MyLib.IO.File,而不是访问System.IO.File。MyLib.IO.File包含系统支持的文件的给定操作集,实际实现将由IOC或singleton工厂提供 但是,不熟悉该系统的人可能只是引用system.IO并开始直接处理文件系统中的文件。如果他的实际配置实例化了标准System.IO包装器,那么所有这些都可以在他的机器上正常工作,但最终会在底层文

我有一个程序,我想为文件系统提供一个抽象,以便读取文件、创建目录等的IO操作总是针对通过给定工厂获得的给定实现执行

例如,您需要访问MyLib.IO.File,而不是访问System.IO.File。MyLib.IO.File包含系统支持的文件的给定操作集,实际实现将由IOC或singleton工厂提供

但是,不熟悉该系统的人可能只是引用system.IO并开始直接处理文件系统中的文件。如果他的实际配置实例化了标准System.IO包装器,那么所有这些都可以在他的机器上正常工作,但最终会在底层文件系统更改时崩溃

是否有任何方法可以警告或甚至更好地禁止在VS应用程序中使用某些名称空间,以便用户知道他不应该使用.NET framework的该部分,而应该使用提供的另一个库来获得该特定功能?

否。没有

编辑:


嗯,也许吧。
System.IO.*
的使用可以通过使用代码访问安全性(或.NET 4.x中的任何替代品)进行限制,但是这意味着您需要完全控制应用程序(例如,加载加载项代码,而不是仅使用程序集的另一个程序)。

是。有一种方法,叫做清晰和简短的API文档。足够清晰以鼓励阅读,足够简短以使开发人员对在完成之前放弃不感兴趣


我的意思是强制使用您自己的库听起来并不糟糕,您有自己的论点,但是模糊BCL库听起来很糟糕。

CASPOL会很烦人,没有多少开发人员会阅读API文档,直到他们陷入困境


发布一个生成脚本,该脚本使用程序集绑定日志查看器(Fuslogvw.exe)对System.IO和其他不需要的引用查询解决方案。您也可以更进一步,使用反射甚至内省来查看System.IO的使用是否正常。IMHO认为此选项的干扰最小,并在一定程度上保证在发布时使用正确的DLL/名称空间。

听起来更像是培训问题,而不是技术问题