我有一个琐碎的问题,但根本无法找出正确的方法来处理它。
我有两个简单的模型:
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
下(我在项目中使用的是Unity
和Prism
),即使我构建了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/