C#-由于其保护级别而无法访问

我在列表视图中显示version(WrmVersion)值,但是在这里我给出了一个条件
意思是如果version(WrmVersion)为null我正在显示’None'(ResourcePolicyAvailSystemsLVI.m_nullString =“ None”),但是现在我得到了一个错误

‘Ship.Controls.ResourcePolicySystemsControl.ResourcePolicyAvailSystemsLVI.m_nullString’ is inaccessible due to its protection level F:\test\Ship\Controls\ResourcePolicySystemsControl.cs 81 70 Ship.Controls

protected override void OnUpdate()
         {
            string func = "ResourcePolicySystemsLVI.OnUpdate";
            try
            {
               if(Data != null)
               {
                  Text = base.Data.Name;
                  if(SubItems.Count == 1)
                  {
                      if (Data.WrmVersion == null)
                      {
                          SubItems.Add(ResourcePolicyAvailSystemsLVI.m_nullString);
                      }
                      else
                          **SubItems.Add(((IResourcePolicy)Data).WrmVersion.ToString());**
                     SubItems.Add(((IResourcePolicy)Data).ResourcePolicyEnabled.ToString());
                     SubItems.Add(((IResourcePolicy)Data).ResourcePolicyCurrent.ToString());
                     //SubItems.Add(((IResourcePolicy)Data).WrmVersion.ToString());
                     //SubItems.Add(Registry.GetValue(@"HKEY_LOCAL_MACHINE\Software\Unisys\Single Point Operations Windows Resource Monitor", "CurrentVersion", "0").ToString()); 
                  }
                  else
                  {
                     SubItems[1].Text = ((IResourcePolicy)Data).ResourcePolicyEnabled.ToString();
                     SubItems[2].Text = ((IResourcePolicy)Data).ResourcePolicyCurrent.ToString();
                  }
               }
               base.OnUpdate();
最佳答案
那么,ResourcePolicyAvailSystemsLVI.m_nullString的保护级别是多少?您的代码在哪里?例如,它将无法访问

>它是私人的,并且您处于不相关的班级
>它受到保护,您不在子类中
>它是内部的,并且您处于没有[InternalsVisibleTo]的其他程序集中
>它是受内部保护的,并且以上两项均适用

老实说,它看起来像一个字段,并且字段通常不是公共的,因此,如果有人更改了可访问性,也许添加了一个公共静态属性来包装它,或者只是简单地更改了名称,这也不会令我感到惊讶-尽管会给出不同的错误).尝试查找ResourcePolicyAvailSystemsLVI.NullString或类似的内容(在intellisense / object-browser中).

重新发表您的评论;你有:

private static string m_nullString =
    Managers.ControlStrings.GetString("ManagedDeviceWizard.None");

所以只需添加:

public static string NullString {get {return m_nullString;}}

并更改您的调用代码以使用ResourcePolicyAvailSystemsLVI.NullString.

转载注明原文:C#-由于其保护级别而无法访问 - 代码日志