ASP.net и WCF некоторые разъяснения по поводу "переопределения" - PullRequest
1 голос
/ 01 апреля 2010

Недавно я столкнулся с несколькими вопросами интервью. Интервьюер попросил дать подробный ответ.

1) Можем ли мы переопределить службу WCF (она не переопределяет OOPS)?. Объясните причину с обеих сторон. (Связано с WCF).

2) Можем ли мы переопределить события страницы (Page_Load ()) ?. Объяснить причину. (Связанный с ASP.NET).

3) Какова основная ответственность события Pre_Init (page), кроме пользовательских настроек Установка, снятие шкур?

4) Можем ли мы переопределить статические методы. Объяснить причину. (C # related)

Может кто-нибудь помочь мне понять причины?

1 Ответ

3 голосов
/ 01 апреля 2010
  1. Вы не можете переопределить операции службы WCF. Если ваш класс Service Service имеет два метода Service Operation с одним и тем же именем, но разными параметрами (то есть допустимыми перегрузками C #), WCF выдаст InvalidOperationException при запуске службы. Если вы действительно хотите это сделать, вы можете изменить имя открытой операции одного из методов в атрибуте OperationContract:

    [OperationContract(Name = "GetDataWithString")]
    public string GetData(string input)
    {
       ...
    }
    
    [OperationContract(Name = "GetDataWithNumber")]
    public string GetData(int input)
    {
       ...
    }
    
  2. Вы можете переопределить события страницы в ASP.Net; это довольно широко используется и обычно довольно важно. Вы можете либо явно переопределить методы из класса Page, от которого наследует ваша пользовательская страница, либо назвать методы так, чтобы ASP.Net знал, что они должны рассматриваться как переопределения. Например, объявление метода в выделенном коде страницы с подписью ниже автоматически переопределит метод Page_Init.

    void Page_Init(object sender, EventArgs e)
    
  3. В методе Page_Init ASP.Net начинает отслеживать ViewState. Это означает, что все, что сделано с любым из элементов управления страницы, теперь помечено как грязное в ViewState StateBag, и поэтому будет закодировано в base-64 и отправлено клиенту в поле скрытого ввода ViewState и, следовательно, отправлено обратно в Сервер на обратной передаче. Изменение значений элементов управления до отслеживания ViewState поможет остановить слишком большое значение ViewState. См. эту основную статью для получения более подробной информации.

  4. Только методы экземпляра класса могут быть помечены как virtual, так как созданная компилятором v-таблица присоединена к экземплярам класса. Статические члены класса привязаны не к экземплярам, ​​а к самому классу, поэтому их невозможно переопределить. Эта статья объясняет это более подробно и дает некоторые обходные пути.

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