Как получить доступ к данным класса за пределами другого класса - PullRequest
0 голосов
/ 29 июля 2011

У меня есть свойство Data в классе BaseLVItem

namespace Spo.Plugins
{



public class BaseLVItem : System.Windows.Forms.ListViewItem
   {
      public virtual IBaseObject Data
      {
         get{ return m_data; }
      }
      private IBaseObject m_data = null;

мы использовали его правильно, как показано ниже в классе ResourcePolicySystemsLVI

public class ResourcePolicySystemsLVI : BaseLVItem
    {


    public new IResourcePolicy Data
    {
        get
        {
            return (IResourcePolicy)base.Data;
        }
    }}

но когда я использую в следующем классе, я получаю ошибку 'System.ComponentModel.StringConverter' не содержит определения для 'Data'

using Spo.Plugins;

   public class ResourcePolicyConverter : StringConverter
   {
       public new IResourcePolicy Data
       {
           get
           {
               return (IResourcePolicy)base.Data;
           }
       }

Я не могу реализовать класс BaseLVItem здесь, может ли кто-нибудь помочь мне здесь

Диксон, я так реализую

   public class ResourcePolicyConverter : StringConverter 
   {
      BaseLVItem lvItem = new BaseLVItem();
      IResourcePolicy data = (IResourcePolicy)lvItem.Data;
--------------------
else if ((value == null) && data.AgentVersion != null )  
            {
                return m_nullPolicy;
            }

Ответы [ 2 ]

1 голос
/ 29 июля 2011

Причина, по которой вы не можете использовать свойство Data во втором примере, заключается в том, что ResourcePolicyConverter не наследуется от BaseLVItem и, таким образом, свойство Data недоступно в base.

Вы можете просто создать новый экземпляр BaseLVItem и получить доступ к свойству Data.

BaseLVItem lvItem = new BaseLVItem();
IResourcePolicy data = (IResourcePolicy)lvItem.Data;
1 голос
/ 29 июля 2011

Это потому, что ваш класс ResourcePolicyConverter наследуется от StringConverter, а не BaseLVItem. Опечатка?

...