由于其保护级别无法访问

时间:2009-12-04 06:07:42

标签: c# .net listview

我在列表视图中显示版本(WrmVersion)值,但在这里我给出了一个编码 意味着如果版本(WrmVersion)为空我显示'无'(ResourcePolicyAvailSystemsLVI.m_nullString =“无”),但现在我收到错误

  

'Ship.Controls.ResourcePolicySystemsControl.ResourcePolicyAvailSystemsLVI.m_nullString'由于其保护级别而无法访问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();

2 个答案:

答案 0 :(得分:11)

那么 <{1}}的保护级别是什么?你的代码在哪里?例如,如果

,将无法访问
  • 它是ResourcePolicyAvailSystemsLVI.m_nullString,而你是一个无关的班级
  • 它是private而您不属于子类
  • 它是protected并且您在没有[internal
  • 的情况下处于不同的程序集中
  • 它是InternalsVisibleTo],上述两个都适用

说实话,看起来就像一个字段,字段一般不是protected internal - 所以如果有人改变了我就不会感到惊讶可访问性,可能添加一个公共静态属性来包装它 - 或者只是更改名称(尽管这会产生不同的错误)。尝试寻找public或类似的(在intellisense / object-browser中)。


重新评论;你有:

ResourcePolicyAvailSystemsLVI.NullString

所以只需添加:

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

并将您的调用代码更改为使用public static string NullString {get {return m_nullString;}}

答案 1 :(得分:2)

您无法添加:

  ResourcePolicyAvailSystemsLVI.m_nullString

因为该成员的范围是私人或内部。

您需要将其公开(或理想情况下,通过属性公开)。