2011-06-05 2 views
1

Привет, ребята, у меня есть приложение, состоящее из базового слоя (MacroCommand), трех подклассов MacroCommand (Resize, Rotate, Color) и другого класса, который не наследует ничего (изображение), а затем другой класс (Macro), который содержит список макрокомандC# Добавление к списку вопроса

class Macro 
{ 
    List<MacroCommand> macroCommandList = new List<MacroCommand>(); 
} 

в принципе, когда я создаю свои объекты макрокоманд в классе формы, мне нужно, чтобы затем добавить их в список макрокоманд, однако, я получаю ошибки при попытке для этого:

macroCommandList.Add(colourObject); 
macroCommandList.Add(rotateFlipObject); 
macroCommandList.Add(resizeObject); 

(это находится в форме cla ss)

Любая помощь будет оценена, спасибо, ребята.

EDIT: Ошибки:

Ошибка 2 имя 'colourObject' не существует в текущем контексте C: \ Users \ Ari \ Desktop \ Назначение 3 \ Назначение 3 \ Назначение 3 \ Form1.cs 134 42 Назначение 3 Ошибка 3 Имя «macroCommandList» не существует в текущем контексте. C: \ Users \ Ari \ Desktop \ Assignment 3 \ Assignment 3 \ Assignment 3 \ Form1.cs 135 21 Assignment 3

Это просто эти ошибки, но для каждой другой линии

+3

Вы чувствуете, что разделяете фактическую ошибку с кем-то? – Kon

+0

Я думаю, вам нужно будет опубликовать полный код, чтобы получить правильную помощь. –

+0

Каковы типы 'colourObject',' rotateFlipObject' и 'resizeObject'? – Yuck

ответ

1

Это должно работать:

class Macro { 
    private List<MacroCommand> macroCommandList = new List<MacroCommand>(); 

    public void AddMacroCommand(MacroCommand mc) 
    { 
     macroCommandList.Add(mc); 
    } 
} 
0

В соответствии с ошибкой объекты, которые вы пытаетесь добавить, не существуют. Где объявляются эти объекты? Каков их объем? Список по умолчанию является закрытым, поэтому вам необходимо предоставить эти объекты в качестве аргументов метода, который добавляет их в список.

0

Если у вас есть List<BaseClass> вы можете только добавить в него элементы, которые могут быть превращены в BaseClass (т.е. BaseClass «эс и классов, производных от BaseClass).

Если вы хотите добавить элементы в список (скажем, macroCommandList), вам необходимо убедиться, что список доступен для вызывающего кода. Это означает, что это делает его общедоступным (не очень хорошая идея) или добавляет публичный метод в его класс сложения (т. Е. Macro), который делает добавление. Метод является общедоступным, поэтому он доступен для вызывающих абонентов вне класса, а также имеет доступ к частной переменной macroCommandList.

Смежные вопросы