首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >多个可为空的Guid,并且其中只有一个可以有值

多个可为空的Guid,并且其中只有一个可以有值
EN

Stack Overflow用户
提问于 2021-10-14 10:08:55
回答 1查看 56关注 0票数 0

我有一个FinancialAccount类,可以链接到其他三个类中,也可以手动生成,所以我实现了一个Enum,其中包含它所链接的类的类型,以及另外三个可以为空的Guid,用于保存该链接类的Guid

代码语言:javascript
复制
public enum AccountClassificaiton
{
    Normal,
    Bank,
    Contract,
    Employee,
}

public Account()
{
    ...
    public Guid Id { get; set; }
    public string Name { get; set; }
    public AccountClassificaiton AccountClassificaiton { get; set; }
    public Guid? ContractId { get; set; }
    public Guid? EmployeeId { get; set; }
    public Guid? BankAccountId { get; set; }
    ...
}

我需要一个更好的方法来解决这个问题,因为我不能将这些Guid移出这个类,并且在这个类和这三个类之间存在一对一的关系,并且这些Guid中只有一个应该有一个值,这取决于这个类的AccountClassification

抱歉我的英语,我不是以英语为母语的

编辑-1

我使用的是领域驱动设计模式,在同一个解决方案上有8个项目,所以我很难在没有法律问题的情况下向您展示真正的问题

编辑-2

这个项目是财务管理系统的一部分,财务管理系统是一个庞大的ERP系统的一部分

EN

回答 1

Stack Overflow用户

发布于 2021-10-14 11:21:55

我会用不同的方式设计它:

代码语言:javascript
复制
public enum AccountClassificaiton
{
    Normal,
    Bank,
    Contract,
    Employee,
}

public Account()
{
    ...
    public Guid Id { get; set; }
    public string Name { get; set; }
    public AccountClassificaiton AccountClassificaiton { get; set; }
    public List<Account> LinkedAccounts { get; set; }
    ...
}

差不多吧。

或者,如果您需要根据帐户类型快速查找链接帐户,则更好的方法是使用关键字为AccountClassificaiton类型(值为account对象)的字典按类型对链接帐户进行分组:

代码语言:javascript
复制
public Dictionnary<AccountClassificaiton, Account> LinkedAccounts { get; set; }

当然,如果您有许多链接的帐户,您可以缩进字典以获得更好的搜索效率:

代码语言:javascript
复制
public Dictionnary<AccountClassificaiton, Dictionnary<Guid, Account>> LinkedAccounts { get; set; }

或者使用一个自定义相等比较器来处理Guid和AccountClassificaiton类型的组合键:https://docs.microsoft.com/en-us/dotnet/api/system.collections.generic.iequalitycomparer-1?view=net-5.0

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69568830

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档