Изменено в документации SweetAlert здесь:
https://sweetalert.js.org/guides/#using-dom-nodes-as-content
swal("Please enter a name for the template.", {
content: "input",
})
.then((response) => {
document.getElementById('HiddenFieldCurrentTemplate').value = response;
});
Виртуальное событие - это просто событие, которое может быть переопределено в производном классе.
Довольны ли вы концепция виртуального свойства, с геттером и сеттером, которые можно переопределить? Если это так, вы можете думать о виртуальном событии точно так же: вместо получателя и сеттера есть операция «добавить» и операция «удалить». Они могут быть виртуальными, поэтому обрабатываются полиморфно. Вы реализуете их так же, как и любой другой виртуальный / переопределенный член.
Пример:
using System;
class Base
{
public virtual event EventHandler Foo
{
add
{
Console.WriteLine("Base Foo.add called");
}
remove
{
Console.WriteLine("Base Foo.remove called");
}
}
}
class Derived : Base
{
public override event EventHandler Foo
{
add
{
Console.WriteLine("Derived Foo.add called");
}
remove
{
Console.WriteLine("Derived Foo.remove called");
}
}
}
class Test
{
static void Main()
{
Base x = new Derived();
x.Foo += (sender, args) => {};
}
}
Обратите внимание, что само событие не отвечает за то, что происходит при его возникновении - только сторона добавления / удаления. (Во всяком случае, в C #; сама среда CLR имеет понятие повышения, но мы пока проигнорируем это.)
Вы также можете прочитать мою статью о событиях , если вы немного нечетко о разнице между событием и делегатом.
Лично я нахожу очень редкостью, что мне нужно виртуальное событие.
Чтобы Foo
был повышен существует 2 альтернативы, которые я нахожу пропавшими без вести из принятого ответа.
public class Base
{
public virtual event EventHandler Foo;
public void Bar()
{
RaiseFoo();
}
protected virtual void RaiseFoo()
{
Foo?.Invoke(this, EventArgs.Empty);
}
}
public class Derived : Base
{
// In this case we use the base Foo as a backing store.
public override event EventHandler Foo
{
add { base.Foo += value; }
remove { base.Foo -= value; }
}
}
public class Derived2 : Base
{
public override event EventHandler Foo;
// In this case we raise the overriden Foo.
protected override void RaiseFoo()
{
Foo?.Invoke(this, EventArgs.Empty);
}
}
class Test
{
static void Main()
{
Base x = new Derived();
x.Foo += (sender, e) => { };
x.Bar();
Base x2 = new Derived2();
x2.Foo += (sender, e) => { };
x2.Bar();
}
}
Примечание, что это не работает:
public class Derived3 : Base
{
public override event EventHandler Foo
{
add { base.Foo += value; }
remove { base.Foo -= value; }
}
protected override void RaiseFoo()
{
Foo?.Invoke(this, EventArgs.Empty);
}
}