Каково различие этими способами создать статический экземпляр для одиночного элемента?

У меня есть эта работа, она требует некоторой работы ..

Чтобы пульсация работала в сети материалов, вам нужно вызвать метод инициализации JS. Смотрите здесь: https://material.io/develop/web/components/buttons/

Хитрость заключается в том, чтобы сделать блейзерный компонент кнопки следующим образом:

[110 ]

refbut является свойством компонента:

private ElementRef refbut { get; set; }

И в OnAfterRenderAsync вы вызываете функцию взаимодействия JS для инициации пульсации:

protected override async Task OnAfterRenderAsync()
{
    if (firstRender)
    {
        firstRender = false;
        await refbut.InitMdcButtonAsync();
    }

}

Эта функция является методом расширения, который выполняет:

    public async static Task InitMdcFabAsync(this ElementRef element)
    {
        await JSRuntime.Current.InvokeAsync("matBlazor.materialInitmdcripple", element);
    }

JS делает это:

materialInitmdcripple: function (element) {
    new mdc.ripple.MDCRipple(element);
    return true;
},

И, конечно же, вы должны убедиться, что материал JS en CSS загружен.

6
задан John Topley 20 October 2008 в 10:29
поделиться

2 ответа

Попытайтесь добавить (пустого) статического конструктора или инициализируйте одиночный элемент в статическом конструкторе.

У Jon Skeet есть полное обсуждение шаблонов "одиночка" здесь. Я не уверен, почему это перестало работать, но в предположении это могло коснуться флага "beforefieldinit". Посмотрите его 4-й пример, где он добавляет статического конструктора для тонкой настройки этого флага. Я не утверждаю, что был экспертом по beforefieldinit, но этот признак, кажется, соответствует некоторым признакам, обсужденным здесь.

8
ответ дан 16 December 2019 в 21:48
поделиться

Просто повторив, что сказал Marc Gravell, но это много походит на beforefieldinit проблему, что означает, пустой статический конструктор является Вашим решением. Необходимо было бы отправить любого и всех конструкторов в классе для получения категорического ответа.

Второй метод имеет преимущество ленивой загрузки (где это - преимущество).

0
ответ дан 16 December 2019 в 21:48
поделиться
Другие вопросы по тегам:

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