C# 在n层asp.net应用程序中存储常量的最佳位置是什么?

C# 在n层asp.net应用程序中存储常量的最佳位置是什么?,c#,asp.net,architecture,tiers,C#,Asp.net,Architecture,Tiers,我想知道什么是存储枚举的最佳位置,我应该在我的n层应用程序中使用like常量 因此,我有一个带有DAL(连接到数据库)、BLL(业务流程)、数据传输对象“层”(没有任何方法的类,只有字段,其他所有人都可以访问这个类)和带有asp页面的接口层的应用程序 我的问题是:我有一个枚举: public enum ID_FOO : uint { ALL = 1, FOOOne= 2, FOOTwo= 3 } 我可以将此枚举(以及所有其他枚举)放在何处进行清理?不在数据访

我想知道什么是存储枚举的最佳位置,我应该在我的n层应用程序中使用like常量

因此,我有一个带有DAL(连接到数据库)、BLL(业务流程)、数据传输对象“层”(没有任何方法的类,只有字段,其他所有人都可以访问这个类)和带有asp页面的接口层的应用程序

我的问题是:我有一个枚举:

 public enum ID_FOO : uint
 {
     ALL = 1,
     FOOOne= 2,
     FOOTwo= 3
 }
我可以将此枚举(以及所有其他枚举)放在何处进行清理?不在数据访问层,接口层将看不到结构,不在业务逻辑层,这不是真正的业务。。可能在数据传输对象中,但它真的是“传输对象”吗? 我应该创建另一层吗


谢谢你的回复

这里显示的不是一个结构,而是一个枚举,我假设所有其他层都会使用它,并且会放在“Transfert”层中。(注意:我以前从未听说过transfert层)

您显示的不是结构,而是枚举,我假设所有其他层都将使用它,并将放在“transfert”层中。(注意:我以前从未听说过transfert层)

我个人会将其放在业务层,因为我会将这些枚举与业务层中的其他类一起使用

我个人会将其放在业务级别,因为我会将这些枚举与业务层中的其他类一起使用

我认为这取决于哪些层将访问这个
struct

您说它将由
DAL
dto
访问。如果由
DTO
使用,我觉得它也将暴露于使用
DTO
层的任何层


如果您觉得它不是
BAL
的一部分,请创建一个单独的程序集(
Common
),以共享此类类型并引用该程序集。这将保持它的干净。

我认为这取决于哪些层将访问此结构

您说它将由
DAL
dto
访问。如果由
DTO
使用,我觉得它也将暴露于使用
DTO
层的任何层

如果您觉得它不是
BAL
的一部分,请创建一个单独的程序集(
Common
),以共享此类类型并引用该程序集。这将保持它的干净。

听起来这个枚举(以及其他常量)是您的域的通用语言的一部分,因此应该在任何地方都可用。理想情况下,组成普适语言的组件将位于它们自己的程序集(它们自己的项目)中,该程序集由域中的所有其他项目引用,而不考虑层

根据您的描述,听起来您的DTO也是无处不在的语言的一部分。(将它们视为贫血模型,在具有硬服务边界的域中经常是必需的。)如果没有任何其他依赖项,这些东西应该组成一个核心程序集,供所有其他项目参考。

听起来这个枚举(以及其他常量)是域中普遍存在的语言的一部分,因此,应该在任何地方都可以使用。理想情况下,组成普适语言的组件将位于它们自己的程序集(它们自己的项目)中,该程序集由域中的所有其他项目引用,而不考虑层


根据您的描述,听起来您的DTO也是无处不在的语言的一部分。(将它们视为贫乏的模型,在具有硬服务边界的领域中经常是必需的。)没有任何其他依赖项,这些东西应该组成一个核心组件,供所有其他项目参考。

我建议使用一个“横切”层,其中包含可以在结构中的任何层之间共享的代码。这可能是您放置此类内容的地方,以及日志记录、安全性或跨层可能需要的其他内容。

我建议使用一个“横切”层,其中包含可以在结构中的任何层之间共享的代码。这可能是您放置此类内容的地方,以及日志记录、安全性或跨层可能需要的其他内容。

我们通常有一个CompanyName.ProjectName.Core库项目,在其中存储枚举、实用程序、常量等。
此解决方案中包含的几乎每个项目都会引用此dll。

我们通常有一个CompanyName.ProjectName.Core库项目,在其中存储枚举、实用程序、常量等。
此解决方案中包含的几乎每个项目都会引用此dll。

我将这些内容存储在最具上下文意义的层中。如果一个enum或struct根据上下文明显地属于应用程序中的某个特定域,那么我将把它放在相关层中。然而,如果它最终成为一个可能跨越多个域的网络,那么一定要在它自己的层中对它进行攻击。请确保以对应用程序具有上下文意义的方式组织它们。

我将这些内容存储在最具上下文意义的层中。如果一个enum或struct根据上下文明显地属于应用程序中的某个特定域,那么我将把它放在相关层中。然而,如果它最终成为一个可能跨越多个域的网络,那么一定要在它自己的层中对它进行攻击。请确保以对应用程序有上下文意义的方式组织它们。

好的,谢谢你提到我,我错了,我说的是结构,但很好,enum,我编辑了我的帖子。。谢谢,谢谢你提到我,我错了,我说的是结构,但这是很好的枚举,我编辑我的文章。。ThanksEdit:不是结构,而是枚举。。SorryEdit:不是结构,而是枚举。。SorryBLL将是更实用的地方(中心),但这真的干净吗?Enum并不是一个真正的业务组件。是的,我相信这是pl最干净的地方