2011-04-28 126 views
1

的價值如何在C#得到非公共成員

 private void DataChangeHandler(object sender, DataChangeEventArgs e) 
     { 
      try 
      { 
       object obj = sender; 
       OpcGroup grp = (OpcGroup)sender;//i want the OPCgroup non public member value 

       if (InvokeRequired) 
       { 
        BeginInvoke(new DataChangeEventHandler(DataChangeHandler), new object[] { sender, e }); 
        //return; 
       } 
       if (parameter.X == 0) 
       { 
        parameter.X = 1; 
        Thread th = new Thread(param.update); 
        th.Start(e); 
       } 
      } 
      catch(OPCException) { } 

     } 

回答

5

你不應該嘗試使用非公共成員使用OPCDA.NET得到OPCGroup的非公共成員的值。如果代碼的作者隱藏了它,則應該假設:

  • 他們不希望您訪問它,至少不是直接訪問它。
  • 實現可能隨時發生變化,您的代碼應該繼續工作。

可以使用反射來訪問非公共成員(假設在執行時適當的權限),但我會極力阻止你這樣做如果可能的話。