如何获得非公共成员的价值

时间:2011-04-28 10:03:24

标签: c# .net

如何使用C#

中的OPCDA.NET获取OPCGroup的非公共成员的值
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 ) { }
}

1 个答案:

答案 0 :(得分:6)

您不应该尝试使用非公开成员。如果代码的作者隐藏了它,您应该假设:

  • 他们不希望您访问它,至少不是直接访问它。
  • 实施可能随时发生变化,您的代码应继续有效。

可以使用反射来访问非公共成员(假设在执行时有适当的权限),但如果可能的话,我会强烈反对你这样做。