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

san*_*ale 1 .net c#

如何在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 ) { }
}
Run Code Online (Sandbox Code Playgroud)

Jon*_*eet 7

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

  • 他们不希望您访问它,至少不是直接访问它.
  • 实现可能随时发生变化,您的代码应该继续工作.

可以使用反射来访问非公共成员(假设在执行时具有适当的权限),但如果可能的话,我强烈建议您不要这样做.