Лучший способ зарегистрировать интерфейс WCF? [закрытый]

Вы показываете все даты как оригинальные, и при нажатии вы хотите, чтобы все даты на странице были обновлены до форматированной версии даты.

В вашем коде вы фактически изменяете дату в состоянии - но вы не должны этого делать, вместо этого вы должны хранить логическое значение (datesFormatted), которое сообщит вам, следует ли отображать отформатированную дату или нет.

Ваша функция переключения будет выглядеть следующим образом:

toggleDate() {
    // reverse the current state
    this.setState({
        datesFormatted: !this.state.datesFormatted,
    })
}

и ваш код рендеринга даты будет выглядеть так:

{job.StartedOn ? (<span onClick={this.toggleDate}>{this.state.datesFormatted ? moment(job.StartedOn).fromNow() : job.StartedOn}</span>) : 'No date'}

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

class DateToggle extends Component {
    constructor() {
        super();
        this.state = {
            showFormatted: true,
        }
    }
    handleToggle = () => {
        this.setState({
            showFormatted: !this.state.showFormatted,
        })
    }
    render() {  
        let displayDate = this.props.date;
        if (this.state.showFormatted) {
            displayDate = moment(displayDate).fromNow()
        }
        return <span onClick={this.handleToggle}>{displayDate}</span>
    }
}

, а затем в родительском компоненте вы можете просто указать в нем дату своей работы:

render() {
    return jobs.map((job, index) => (<DateToggle date={job.StartedOn} />));
}
22
задан Kiquenet 5 August 2016 в 06:34
поделиться

5 ответов

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

Затем вы можете использовать Sandcastle (+ некоторый GUI, который вы можете найти в Codeplex) для генерации либо chm или HTML документация.

5
ответ дан 29 November 2019 в 04:26
поделиться

Использовать вывод XML из компилятора - это хорошо ... но я знаю, что сложно выразить всю сложность службы и ее ожидаемые инварианты, зависимости и т. Д. В одни комментарии Вам лучше поддерживать отдельный реальный документ (Word, HTML,

0
ответ дан 29 November 2019 в 04:26
поделиться

Я положу свой интерфейсный контракт в общую DLL и раздам ​​это. Он дает им как xml-комментарии к контракту, не раскрывая подробности службы, так и позволяя им внедрять службу в автономном режиме для тестирования, пока они не будут готовы ее использовать. Кроме того, они могут обойти wsdl и использовать ChannelFactory для создания канала.

0
ответ дан 29 November 2019 в 04:26
поделиться

Я использую два файла XSL - один для документирования WSDL для операций, другой для документирования XSD для передаваемых данных.

К сожалению, до сих пор я не нашел единое связное решение, поэтому я работаю с двумя файлами XSLT, которые преобразуют WSDL и XSD соответственно в документацию HTML.

WSDL Viewer выполняет работу для WSDL и создает первый документ HTML, а xs3p делает то же самое для данных, содержащихся в файле XSD.

3
ответ дан 29 November 2019 в 04:26
поделиться

Для этого мы используем WCFExtras ( http://www.codeplex.com/WCFExtras ).

Среди других функций он позволяет в реальном времени экспортировать XML-комментарии вашего кода в сгенерированный WSDL, например, проверьте, как эти XML-комментарии:

    /// <summary>
    /// Retrieve the tickets information for the specified order
    /// </summary>
    /// <param name="orderId">Order ID</param>
    /// <returns>Tickets data</returns>
    [OperationContract]
    TicketsDto GetTickets(int orderId);

отражаются в WSDL этого интерфейса:

    <wsdl:operation name="GetTickets">
    <wsdl:documentation>
    <summary> Retrieve the tickets information for the specified order </summary> <param name="orderId">Order ID</param> <returns>Tickets data</returns>
    </wsdl:documentation>
    <wsdl:input wsaw:Action="xxxx" message="tns:PartnerAPI_GetTickets_InputMessage"/>
    <wsdl:output wsaw:Action="xxxx" message="tns:PartnerAPI_GetTickets_OutputMessage"/>
    </wsdl:operation>

Выдержка из их документации:

Добавление документации WSDL из комментариев XML исходного кода Это расширение позволяет добавлять документацию WSDL (annotaiton) прямо из комментариев XML в исходный файл. Эти комментарии будут опубликованы как часть WSDL и доступны для инструментов WSDL, которые знают, как ими воспользоваться (например, Apache Axis wsdl2java и другие). Версия 2.0 также включает в себя импортер WSDL на стороне клиента, который преобразует эти комментарии WSDL в комментарии XML в сгенерированном коде прокси.

38
ответ дан 29 November 2019 в 04:26
поделиться
Другие вопросы по тегам:

Похожие вопросы: