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

Во время разработки кода в winforms c # у меня возникла проблема.

В составном шаблоне код похож на

// Интерфейс

interface Usage
    {  
        public abstract void getinfo();
        public abstract void add(Usage u);
    }

// Leaf

class status : Usage
    {
        public string strng;
        public status()
        {
            this.strng = "Hello";
        }
        public override void getinfo()
        {

        }
        public override void add(Usage u)
        {
        }
    }

// Составной класс

class composite : Usage
    {
        string strng;
        ArrayList node=new ArrayList();
        public override void add(Usage u)
        {
            node.Add(u);
        }
        public override void getinfo()
        {
            foreach (Usage u in this.node)
            {
                u.getinfo();
            }

        }   
    }

Но мне не удалось захватить строку strng, которая является Leaf ( status ) классом? тип возврата getinfo () метод равен VOID. Но из-за реализации метода интерфейса я не могу сделать его STRING типом возврата. Кто-нибудь, пожалуйста, разрешите мою проблему. Заранее спасибо.

Ответы [ 2 ]

3 голосов
/ 14 июня 2011

Вам нужно будет изменить интерфейс.Нет смысла иметь метод 'get' void

2 голосов
/ 14 июня 2011

Как Роберт предлагает почему бы просто не изменить его на:

interface Usage
{  
    string getinfo();
    void add(Usage u);
}

и:

class status : Usage
{
    public string strng;
    public status()
    {
        this.strng = "Hello";
    }
    public override string getinfo()
    {
        return strng;
    }
    public override void add(Usage u)
    {
    }
}
...