日期:2014-05-17  浏览次数:20749 次

C#在设计时为何将同一命名空间的东西放在不同的程序集当中
比如在mscorlib.dll当中定义了System.Collections.Generic,在System.dll当中又定义了部分System.Collections.Generic的东西,为什么不将这两个合并到同一个dll当中,而分开来放,跟.net的发展历史有关系吗?

------解决方案--------------------
主要为了保证mscorlib.dll足够紧凑,因为这是所有.NET程序必须使用的程序集。
------解决方案--------------------
程序集有一些约束,例如不能产生循环引用。

另外比如说你上面有个挺讨厌的“经理”,他不干正经事(不做架构设计)却非要隔绝你跟朋友们的设计上的联系(好防止你的公认水平超过他),那么你可能只好在你自己负责的dll中来实现之前朋友们设计约定过的功能了。

总之无论任何原因,不同dll中的代码可能命名空间相同、要表达的分类名称相同,这有什么不可以的呢?