2011-12-29 3 views
0

Пока я просматривал образец кода, я заметил следующие атрибуты, которые я не понимаю, как они используются. Эти классы, как представляется, генерируются из xsd.Зачем использовать beginInvoke и DebuggerStepThroughAttribute и другие атрибуты

[System.Diagnostics.DebuggerStepThroughAttribute()] 
[System.ComponentModel.DesignerCategoryAttribute("code")] 
[System.Web.Services.WebServiceBindingAttribute(Name="FlightHistoryGetRecordsSOAPBinding", Namespace="http://www.pathfinder-xml.com/FlightHistoryService.wsdl")] 


[System.Web.Services.Protocols.SoapDocumentMethodAttribute("", Use=System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle=System.Web.Services.Protocols.SoapParameterStyle.Bare)] 
[return: System.Xml.Serialization.XmlElementAttribute("FlightHistoryGetRecordsResponse", Namespace="http://pathfinder-xml/FlightHistoryService.xsd")] 

Также не могли понять следующие методы:

public System.IAsyncResult BeginFlightHistoryGetRecordsOperation(FlightHistoryGetRecordsRequest FlightHistoryGetRecordsRequest, System.AsyncCallback callback, object asyncState) { 
     return this.BeginInvoke("FlightHistoryGetRecordsOperation", new object[] { 
        FlightHistoryGetRecordsRequest}, callback, asyncState); 
    } 

    /// <remarks/> 
    public FlightHistoryGetRecordsResponse EndFlightHistoryGetRecordsOperation(System.IAsyncResult asyncResult) { 
     object[] results = this.EndInvoke(asyncResult); 
     return ((FlightHistoryGetRecordsResponse)(results[0])); 
    } 

Так у меня есть следующие вопросы:
1. Что каждый атрибут делать.
2.Что такое возвращение в атрибутах?
3. Каковы параметры, используемые в методе FlightHistoryGetRecordsResponse и почему он возвращает this.BeginInvoke?

ответ

3

1a: Атрибут DebuggerStepThough указывает, что при достижении точки останова и кодер переходит через код, отладчик пропустит этот метод, а не приостанавливает работу в каждой строке.

1b: Атрибут DesignerCategory указывает на группировку для класса, если/когда он появляется во временных элементах дизайна, таких как сетка свойств в визуальной студии.

1c: Атрибут WebServiceBinding присваивает имя и пространство имен классу, который представляет веб-службу.

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

2: Оператор return перед атрибутом указывает, что атрибут применяется к возвращаемому из метода значению, а не к самому методу. Аналогичным образом вы можете применять атрибуты к параметрам метода. В этом случае атрибут описывает, как возвращаемое значение должно быть сериализовано в XML.

3: Это похоже на обычный запрос веб-службы запроса/ответа, но он был изменен так, чтобы быть асинхронным. AsyncCallback - это метод, который следует вызывать, когда асинхронная операция принудительно завершена, а возвращаемое значение - AsyncResult, которое может использоваться для проверки выполняемой операции из других частей кода. Это старый шаблон асинхронных вызовов методов, и вы больше не находите этот тип кода. See Async Pattern on MSDN...

0

Возврат в атрибуте присваивает атрибуту возвращаемый тип метода, аналогичный сборке: Someattribute в AssemblyInfo.cs.

BeginInvoke вызывает метод асинхронно и возвращает объект, который предоставляет информацию о статусе этого вызова и способ получить окончательный результат.

Для описания всех атрибутов я предлагаю вам ознакомиться с документацией MSDN и задать конкретные вопросы.

 Смежные вопросы

  • Нет связанных вопросов^_^