我应该如何使用属性,我的类的结构应该是跨多个类使用索引器

本文关键字:索引 属性 何使用 我的 结构 我应该 | 更新日期: 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的麻烦就会少一些。