найти лучший способ применить свойство к коду - PullRequest
0 голосов
/ 18 октября 2011

извините за запутанный заголовок.Я использую сторонний контроллер для спредов, и он имеет comboBoxCellType ().В моем коде есть примерно 20 мест, где у меня есть такой код:

ComboBoxCellType cbo = new ComboBoxCellType()
cbo.OtherStuff...

Теперь я хочу, чтобы у всех вхождений таких кодов было дополнительное свойство под названием listwidth = 0;так что-то вроде:

ComboBoxCellType cbo = new ComboBoxCellType()
cbo.listwidth=0;
cbo.OtherStuff

Один из способов - просто найти код и добавить его вручную.но мне было интересно, есть ли лучший способ использовать наследование и переопределение, чтобы сделать это?

Ответы [ 3 ]

1 голос
/ 18 октября 2011

Вы можете создать статический класс, который можно использовать для создания ComboBoxCellType.

Примерно так:

public static class ComboBoxCellTypeFactory
{
     public static ComboBoxCellType Create()
     {
         return new ComboBoxCellType(){listwidth = 0};
     }
}

Таким образом вы можете создавать новые экземпляры ComboBoxCellType со свойством listwidthустановить на 0, как это:

ComboBoxCellType cbo = ComboBoxCellTypeFactory.Create();
cbo.OtherStuff...
1 голос
/ 18 октября 2011

Инкапсулируйте создание и инициализацию ComboBoxCellType для метода и вызывайте этот метод из каждого места, где вы ранее это делали.

В общем, если вы обнаружите, что повторяете код, посмотрите, можете ли вы извлечькод в метод, который вы можете вызвать.Сохраните ваш код DRY .

Что-то вроде:

private ComboBoxCellType BuildComboBoxCellType()
{
  ComboBoxCellType cbo = new ComboBoxCellType()
  cbo.listwidth=0;
  cbo.OtherStuff...

  return cbo;
}

И в вашем исходном коде:

ComboBoxCellType cbo = BuildComboBoxCellType();
0 голосов
/ 18 октября 2011

Если у вас есть доступ к исходному коду, я бы предложил поместить this.listwidth = 0 в конструктор вашего ComboBoxCellType.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...