gpt4 book ai didi

c# - 在运行时转换值

转载 作者:行者123 更新时间:2023-11-30 23:29:12 25 4
gpt4 key购买 nike

我有一个微不足道的问题,但就是想不出一个正确的方法来处理它。

我有两个简单的模型:

public class Employee
{
public string Name { get; set; }
public string Surname { get; set; }
public DateTime DateOfBirth { get; set; }

public Address EmployeeAddress { get; set; }

//hierachy level
public int EmployeeLevelID { get; set; }
}

和另一个模型:

public class EmployeeLevel
{
public string DisplayName { get; set; }
public int LevelID { get; set; }
}

通过 EmployeeLevel我的意思是 LevelID 1 会有 DisplayName 经理LevelID 2 将是例如正式员工

如您所见,我正在存储简单的 int EmployeeLevelID 的值, 这决定了谁是当前 Employee是。之所以会这样,是因为用户可以自己确定哪些是DisplayNames。因为他们的位置,这就是为什么他们在两个不同的模型中分开的原因。

我需要做的是,在页面/表单上显示当前员工的信息时,我想显示 DisplayName他的位置,而不是LevelID .

问题是,所有职位的列表及其 ID 都存储在我的 EmployeeRepository 下(我在我的项目中使用 UnityPrism)即使我构建了一个 IValueConverter ,我将无法轻易通过集合。

我当然可以创建一个单独的层,作为公共(public)值的持有者(所有类可见),但我不认为这是可行的方法。

任何建议(甚至关于我的模型)都将不胜感激,因为我现在很困。

最佳答案

对于这种情况,成员类不是一个很好的数据结构,因为您不想存储每个员工的显示名称,这是浪费空间,如果您必须更改显示名称,则必须迭代通过具有该 levelID 的所有员工。

我们可以简单地使用一个字符串数组来解决这个问题,ID就是索引,显示名称就是值,我们甚至可以让这个数组成为类的静态成员,这样就可以很容易地访问它任何对象。

public class Employee
{
static int[] DisplayNameList = new int[] { "Manager", "Regular Employee", "Intern" };

// rest of the member variables

public int EmployeeLevelID { get; set; }
}

您可以使用 ID 作为索引来访问列表。

Employee.DisplayNameList[EmployeeLevelID];

现在您可以通过修改静态数组中的值来更改显示名称。

Employee.DisplayNameList[0] = "CEO";

关于c# - 在运行时转换值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35608052/

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