我应该如何使用属性,我的类的结构应该是跨多个类使用索引器
本文关键字:索引 属性 何使用 我的 结构 我应该 | 更新日期: 2023-09-27 18:07:08
我需要帮助,我如何去类的结构。如何使用Indexers
?比如
Company.Employees[empId].Employee["Designation"].Salary
更具体地说,比如Grid.Rows [rowIndex] .Columns("CurrentColumnName")。宽度
添加如下方法
public string this[string s]
{
get{
if(s == ...)
return this.property;
}
}
然而,这似乎更像是Collections
的情况,但是查看这里的完整示例
实际上索引器是用来通过索引获取元素的,而您的EmpId不是一个很好的索引候选,因为这些可能是组合或非顺序的。
如果您仍然想使用它,这里是代码。它将模仿Indexer,但它的修改版本。
class Employee
{
public int EmpId { get; set; }
public float Salary { get; set; }
public string Designation { get; set; }
}
class Employees
{
List<Employee> EmpList = new List<Employee>();
public Employee this[int empId]
{
get
{
return EmpList.Find(x => x.EmpId == empId);
}
}
}
我宁愿有一个方法,因为我可以使它成为通用的。
public T GetPropertyValue<T>(string property)
{
var propertyInfo = GetType().GetProperty(property);
return (T)propertyInfo.GetValue(this, null);
}
var emp = employee.GetPropertyValue<Employee>("Designation");
var salary = emp.Salary;
说……要小心有这么多的点符号。当您在日志文件的行中获得NullReferenceException时,很难找出究竟什么是空的。因此,最好将代码拆分,多写几行,这样解决bug的麻烦就会少一些。