我理解这可以解释为一个意见问题,但它是技术问题,我目前正在努力解决这个问题.
在Prism文档中,声明模块应该具有松散耦合而没有直接引用,只能通过共享接口.如下图所示:

我的问题是,如果只需要一些模块IOrdersRepository,那么基础设施就是错误的地方,因为它包含所有模块的共享代码.如果我将接口放在另一个模块中,那么两个模块都需要直接引用该模块,从而打破松耦合.
我应该简单地创建一个包含此接口的库,而不是遵循模块模式吗?
谢谢,卢克
它绝对应该是Infrastructure模块.Markus的论证是绝对正确的 - 你不应该为每个共享接口集创建单独的程序集.拥有Infrastructure大量接口的模块更好,而不是许多模块,每个模块都有一些接口.想象一下,有一次你会发现,你的两个"接口集"应该使用一些共享接口!你会怎么做?为"超级共享"接口添加一个程序集?或者将这些模块合并为一个?我想是错的.
所以 - 绝对Infrastructure模块!
PS.想象一下,.NET Framework有1000个库 - 一个用于集合,另一个用于数学函数等....
更新:
实际上,我Infrastructure主要使用模块用于接口和非常基本的DTO.所有共享代码我移动到另一个程序集(如YourApplication.UIControls,YourApplication.DAL等).我没有足够的理由这样做,但这是我了解Prism的推荐的方法.只是恕我直言.
更新2:
如果你想分享你的服务如此广泛 - 我认为它绝对有这样的结构:
YourApplication.Infrastructure- "非常共享"的界面(如IPaymentService)YourApplication.Modules.PaymentModule - 您的PaymentService的"非常共享"实现YourApplication.WPF.Infrastucture - 您的WPF应用程序的基础结构(除了 YourApplication.InfrastructureYourApplication.WPF.Modules.PaymentUI - 一些WPF特定的UI为您的 YourApplication.Modules.PaymentModuleYourApplication.WebSite.Modules.PaymentUI - 网站用户界面等等..所以,你的模块几乎总是会引用YourApplication.Infrastructure和YourApplication.TYPEOFAPP.Infrastructure,哪里TYPEOFAPP可以是WPF,WebSite,WinService等.或者你可以把它命名为YourApplication.Modules.PaymentUI.WPF..