C# IoC隐藏平台不匹配
假设您有一个三层应用程序:C# IoC隐藏平台不匹配,c#,visual-studio,inversion-of-control,loose-coupling,C#,Visual Studio,Inversion Of Control,Loose Coupling,假设您有一个三层应用程序: 用户界面层(UI) 业务层(BLL) 数据层(DAL):引用32位DLL,因此它必须编译为x86 在传统应用程序中,UI将引用BLL,BLL将引用DAL。如果将UI或BLL设置为“任意CPU”平台,您将在C#编译器中收到平台不匹配警告。因此,x86需求(或“建议”,因为它是一个警告)会出现在UI上,然后编译器会很高兴 在使用IoC的应用程序中,假设您现在添加了第四个程序集“共享接口”,该程序集由所有层引用。此外,UI同时引用BLL和DAL,而BLL不引用DAL。在这种
编辑:因此,重新思考这个问题后,我意识到我的逻辑有缺陷。主程序集(UI)决定应用程序在哪个平台下运行。因此,即使BLL保持为“任意CPU”,UI也将强制x86,而不会导致任何运行时错误。更好的是,如果BLL是共享的,而另一个DAL实现不需要x86,那么另一个应用程序可以作为任何CPU使用,因为您不需要拖拽该引用。还有其他一些编译器错误转移到运行时错误的例子吗?您的推理与IoC或松耦合无关。无论您如何使用DLL,只要您现在开始混合32位/64位,这些错误就会出现。错误发生在程序集级别,而不像松散耦合或依赖项注入那样发生在类级别