我有一个琐碎的问题,但根本无法找出正确的方法来处理它。

我有两个简单的模型:

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 Manager,而LevelID 2将具有正式员工

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

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

问题是,所有职位及其ID的列表都存储在我的EmployeeRepository下(我在项目中使用的是UnityPrism),即使我构建了IValueConverter,我也不会能够轻松通过收藏。

我当然可以创建一个单独的层,该层可以充当公共价值观的持有者(在所有类中都是可见的),但是我不认为这是可行的方法。

任何建议(即使是关于我的模型的建议)也将不胜感激,因为我目前还很固执。

最佳答案

在这种情况下,成员类不是很好的数据结构,因为您不想将显示名称存储在每个员工中,这是浪费空间,并且如果必须更改显示名称,则必须遍历所有具有该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/

10-09 05:11