Как вызвать конструктор из его параметризованного конструктора? - PullRequest
0 голосов
/ 29 ноября 2011

Как вызвать конструктор из его параметризованного конструктора?

Ниже приведен мой пользовательский управляющий код, в котором я хочу вызвать два параметризованных конструктора RouteBuilderPagerControl из трех параметризованных RouteBuilderPagerControl.

public RouteBuilderPagerControl(GridPagingManager paging, GridTableView tableView)
{
  SetPager(paging, tableView);
  SetDataToControl();
}
public RouteBuilderPagerControl(GridPagingManager paging, GridTableView tableView, List<int> pageSizes)
{
  ddl.Items.Clear();
  pageSizes.Sort();
  foreach (int size in pageSizes)
  {
    ddl.Items.Add(new ListItem(size.ToString() + " per page", size.ToString()));
  }
  SetPager(paging, tableView);
  SetDataToControl();
}

Ответы [ 3 ]

1 голос
/ 29 ноября 2011

Вы можете связать конструкторы:

public RouteBuilderPagerControl(GridPagingManager paging, 
                                GridTableView tableView, 
                                List<int> pageSizes) 
    : this(paging, tableView)

Это описано в MSDN - Использование конструкторов .

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

SetPager(paging, tableView);
SetDataToControl();
0 голосов
/ 29 ноября 2011

Вы можете вызвать другой конструктор, используя ключевое слово this перед телом конструктора:

public RouteBuilderPagerControl(GridPagingManager paging, GridTableView tableView, List<int> pageSizes)
    :this(paging, tableView)
{

Другой конструктор запустит перед телом текущего конструктора.Вы не можете назвать это в произвольной точке тела.Другое ограничение заключается в том, что вы не можете получить доступ к каким-либо методам / полям экземпляра в этой точке.

В вашем случае похоже, что вы хотите вызвать другой конструктор после текущего конструктора, что невозможно в C #.

0 голосов
/ 29 ноября 2011

Вы должны использовать «это»:

    public RouteBuilderPagerControl(GridPagingManager paging, GridTableView tableView, List<int> pageSizes) 
           : this(paging, tavleView)
    {
      ...
    }
...