2013-04-01 42 views
1

我需要關於如何去了解班級結構的幫助。我如何使用Indexers?我想有像我應該如何使用屬性以及我的班級結構應該如何在多個班級中使用索引器

Company.Employees[empId].Employee["Designation"].Salary 

更具體像 Grid.Rows [rowIndex位置] .Columns [ 「CurrentColumnName」。寬

+1

哪部分的文檔(http://msdn.microsoft.com/en-ca/library/vstudio/6x16t2tx.aspx)不清楚? –

+0

我認爲你正在尋找'名單'。 –

+0

雖然在這個地方s/hes可能只是尋找字典 – IdeaHat

回答

1

添加一個方法類似

public string this[string s] 
{ 
    get{ 
     if(s == ...) 
      return this.property; 
    } 

} 

然而,這似乎更多的是Collections的情況,但 參見here的完整示例。

0

實際上,索引器用於按索引獲取元素,而您的EmpId不適合索引,因爲這些可能是堆肥或非順序。

如果你仍然想使用它,這裏是代碼。它會模仿索引器,但它的修改版本。

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); 
     } 
    } 
} 
0

我寧願有一個方法,因爲我可以使它通用。

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時,很難找出究竟是什麼null。所以寧可將事情分解一點,並有更多的線路,那麼解決錯誤的麻煩就少了。

相關問題