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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как унифицировать создание похожих объектов? 
:(
    Опции темы
Stas123
Дата 1.8.2011, 10:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 180
Регистрация: 18.11.2009

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



У меня есть два объекта, одного класса, кождый из которых создается при нажатии кнопки, т.к. некоторые значения полей должны быть различны(это определяется тем, какая кнопка нажата)
Код

private void ConservativeRegimeBuy_Click(object sender, RoutedEventArgs e)
        {
            _bBuy = true;
            bool isValid = CheckValidData(Regime);
            bool isSecure = CheckSecurity();
            if(isValid && isSecure){
                if((_consBuyStrategy == null) || (_consBuyStrategy != null && _consBuyStrategy.ProcessState == StrategyProcessStates.Stopped)){
                    _consBuyStrategy = new ConservativeRegime( _bBuy, _price, _dPrice, _division, _nLot, this)
                    {
                        Name= _name,
                        Massa= _massa,
                    };
                    _consBuyStrategy.ConsStratStop += StopConservativeStrategyBuy;
                    _consBuyStrategy.Log += OnLog;
                    _consBuyStrategy.PropertyChanged += OnStrategyPropertyChangedB;
                    _consBuyStrategy.NewOrder += OnNewOrder;
                }

                if (_consBuyStrategy.ProcessState == StrategyProcessStates.Stopped)
                {
                    _consBuyStrategy.Start();
                    this.StPBuyOrderCons.Background = Brushes.Green;
                    this.BuyOrderCons.Content = "Остановится";
                }
                else
                {
                    _consBuyStrategy.CancelActiveOrders();
                    _consBuyStrategy.Stop();
                    StopConservativeStrategyBuy();
                }
            }
        }
Код

private void ConservativeRegimeSell_Click(object sender, RoutedEventArgs e)
        {
            _bBuy = false;
            bool isValid = CheckValidData(Regime);
            bool isSecure = CheckSecurity();
            if(isValid && isSecure){
                if((_consSellStrategy == null) || (_consSellStrategy != null && _consSellStrategy.ProcessState == StrategyProcessStates.Stopped)){
                    _consSellStrategy = new ConservativeRegime( _bBuy, _price, _dPrice, _division, _nLot, this)
                    {
                        Name= _name,
                        Massa= _massa,
                    };
                    _consSellStrategy.ConsStratStop += StopConservativeStrategySell;
                    _consSellStrategy.Log += OnLog;
                    _consSellStrategy.PropertyChanged += OnStrategyPropertyChangedS;
                    _consSellStrategy.NewOrder += OnNewOrder;
                }
                
                if (_consSellStrategy.ProcessState == StrategyProcessStates.Stopped)
                {
                    _consSellStrategy.Start();
                    this.StPSellOrderCons.Background = Brushes.Red;
                    this.SellOrderCons.Content = "Остановится ";
                }
                else
                {
                    _consSellStrategy.Stop();
                    _consSellStrategy.CancelActiveOrders();
                    StopConservativeStrategySell();
                }
            }
        }
Код

private ConsRegime _consBuyStrategy;
private ConsRegime _consSellStrategy;

как видите, код почти одинаков. Каким образом избежать дублирования?

PM MAIL   Вверх
jonie
Дата 1.8.2011, 11:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 5613
Регистрация: 21.8.2005
Где: Владимир

Репутация: 22
Всего: 118



ну вынесите код создания в функцию, куда передайте парметром тип _consSellStrategy.ConsStratStop (делегат)  (вроде бы в этом только отличие, если надо то и другие "отличия" тоже передайте). А в обработчиках пропросту вызывайте эту функцию с нужными параметрами.

Это сообщение отредактировал(а) jonie - 1.8.2011, 11:07


--------------------
Что-то не поняли? -> Напейтесь до зеленых человечков... эта сверхцивилизация Вам поможет...
PM MAIL Jabber   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
mr.DUDA
THandle

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


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

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


 




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


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

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