Модераторы: Partizan, gambit
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как избежать циклических ссылок, Класс ->Формы->Контролы->Класс 
:(
    Опции темы
MyName
Дата 11.4.2005, 13:38 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











У меня такая ситуация:
Есть класс, который вызывает форму для своего редактирования, на форме содержатся контролы, которые ссылаются на этот класс.
При этом выдается ошибка типа "Циклические ссылки не поддерживаются".
Народ, помогите, плиз...
  Вверх
arilou
Дата 11.4.2005, 14:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Великий МунаБудвин
****


Профиль
Группа: Экс. модератор
Сообщений: 2646
Регистрация: 15.7.2004
Где: город-герой Минск

Репутация: 21
Всего: 61



Вы, наверное, имеете ввиду циклические ссылки между проектами? Т.е. в одом проекте у Вас класс ссылающийся на класс формы, определенной в другом проекте.
В таком случае необходимо создать третий проект, на который будут ссылаться оба текущих проекта. В этот проект можно поместить определение интерфейса, которому должно соответствовать форма. Например:

Проект MyApp.Common
Код

public interface IMyClassDataProvider
{
  string GetStringData();
}


Проект MyApp.Classes. Ссылается на MyApp.Common
Код

public class MyClass
{
  // этому методу нужны данные из формы
  public void processFormData(IMyClassDataProvider form)
  {
    string neededData = form.GetStringData();
    // делаем, то что нужно со строкой
  }
}


Проект MyApp.GUI. Ссылается на MyApp.Classes и MyApp.Common

Код

public class Form1 : Form, IMyClassDataProvider
{
  // всякие объявления 
  // ...............

  // метод, вызывающий член класса MyClass
  void doSomething()
  {
     MyClass processor = new MyClass();
     // вызываем метод класса для обработки данных
     // и передаем ему ссылку на текущую форму, приведенную к виду
     // общего интерфейса
     processor.processFormData((IMyClassDataProvider)this);
  }

  public string GetStringData()
  {
     return "this data comes from the implemented interface member";
  }
}


В любом случае, передавать ссылку на форму в класс, если этот класс предназначен для обработки данных, т.е. форма ему нужна только для этого, является признаком плохого дизайна программы. В таких случая лучше передавать либо
1) данные через параметры метода или свойства класса
2) данные через спец. класс - носитель

P.S. Предлагаю Вам зарегестрироваться и стать полноправным участником нашего форума.

Это сообщение отредактировал(а) arilou - 11.4.2005, 14:44


--------------------
user posted imageuser posted image
PM WWW ICQ   Вверх
mr.DUDA
Дата 11.4.2005, 14:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


3D-маньяк
****


Профиль
Группа: Экс. модератор
Сообщений: 8244
Регистрация: 27.7.2003
Где: город-герой Минск

Репутация: 110
Всего: 232



Цитата(MyName @ 11.4.2005, 13:38)
Есть класс, который вызывает форму для своего редактирования, на форме содержатся контролы, которые ссылаются на этот класс.
При этом выдается ошибка типа "Циклические ссылки не поддерживаются".

Не знаю, как другие, а я ничего не понял.
Какой класс ? Визуальный компонент ? Какая форма ? Откуда вызывается, из студии что ли, для визуального редактирования в design-time ? А если нет, то может быть речь идёт о PropertyGrid, в который запихивается объект класса ?


--------------------
user posted image
PM MAIL WWW   Вверх
MyName
Дата 11.4.2005, 15:29 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Спасибо :О)
  Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
mr.DUDA
THandle

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.
Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :)
Так же не забывайте отмечать свой вопрос решенным, если он таковым является :)


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Общие вопросы по .NET и C# | Следующая тема »


 




[ Время генерации скрипта: 0.0550 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.