Зачем использовать beginInvoke и DebuggerStepThroughAttribute и другие атрибуты - PullRequest
0 голосов
/ 29 декабря 2011

Пока я просматривал пример кода, я заметил следующие атрибуты, которые я не понимаю, как они используются. Кажется, эти классы созданы из xsd.

[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?

Ответы [ 2 ]

3 голосов
/ 29 декабря 2011

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

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

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

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

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

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

0 голосов
/ 29 декабря 2011

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

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

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

...