gpt4 book ai didi

c# - 依赖于字符串值的业务逻辑

转载 作者:太空宇宙 更新时间:2023-11-03 20:28:41 25 4
gpt4 key购买 nike

在我正在从事的一个项目中,我使用的是 Entity Framework 4.1(Code First)。我在两个实体之间有如下关系:

public class Project
{
public int Id { get; set; }

// snip...

// Foreign Key
public string ProjectId { get; set; }

// navigation proeprty
public virtual ProjectType ProjectType { get; set; }
}

public class ProjectType
{
public string Id { get; set; }

public virtual ICollection<Project> Projects { get; set; }
}

现在我的业务逻辑取决于正在创建/编辑的项目类型,所以我有这样的代码:

if( "P".Equals(project.ProjectTypeId) )
// logic goes here

有没有其他不依赖于我比较字符串值的方法来做到这一点?

最佳答案

我个人更喜欢将 ProjectTypeId 转换为枚举类型。

var projectType = Enum.Parse(typeof(ProjectType), project.ProjectTypeId);
switch(projectType)
{
case ProjectType.P: // logic goes here
case ProjectType.N:
break;
default: throw new ArgumentOutOfRangeException("That wasn't a valid project type");
}

我假设您有固定数量的 ProjectType,并且您的代码应该知道所有这些。当您需要查看可以使用的所有 ProjectType 时,此方法为您提供了一个单一的“真实来源”。我更喜欢这个而不是其他选项,比如带有字符串常量的类,因为:

  1. 如果您发现项目的项目类型无效,“快速失败”会更容易。
  2. 您可以将 ProjectType 作为强类型参数传递给实用程序函数等。

关于c# - 依赖于字符串值的业务逻辑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8827558/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com