Подтвердить что ты не робот

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

public interface IAutomatizableEvent
{
    Event AutomatizableEventItem { get; }
    bool CanBeAutomatic { get; }
    bool IsAutomaticallyRunning { get; }

    bool OnBeforeAutomaticCall();
    bool OnAutomaticCheck();
    void OnAutomaticStart();
    void OnAutomaticCancel();
}

public abstract class AutomatizableEvent : IAutomatizableEvent
{
    public AutomatizableEvent()
    {
    }

    #region Implementation of IAutomatizableEvent

    public abstract Event AutomatizableEventItem { get; }
    public abstract bool CanBeAutomatic { get; }
    public abstract bool IsAutomaticallyRunning { get; }
    public abstract bool OnBeforeAutomaticCall();
    public abstract bool OnAutomaticCheck();
    public abstract void OnAutomaticStart();
    public abstract void OnAutomaticCancel();

    #endregion
}



public static class EventSystem
{
    public static List<EventSystemBase<Event, AutomatizableEvent>> AutomatizableEvents { get; set; }
    [...]
}

"Тип" AutomatizableEvent "должен иметь открытый конструктор без параметров, чтобы использовать его в качестве параметра" K "в универсальном классе" EventSystemBase ""

public abstract class EventSystemBase<T, K> : AutomatizableEvent
    where T : Event
    where K : AutomatizableEvent, new()

Мой вопрос... не AutomatizableEvent ДЕЛАТЬ открытый конструктор без параметров

4b9b3361

Ответ 1

Описание ошибки неверно, но ошибка верна.

AutomatizableEvent не может использоваться как общий параметр K из-за ограничения where K : new(). Абстрактный класс не удовлетворяет этому ограничению.

Конструктор абстрактного класса эффективно защищается, всегда, поскольку абстрактное может быть создано только как базовый подобъект производного класса, конструктор может быть так же вызван только конструктором производного класса, и только в цепочке конструкторов. В частности, он не может использоваться EventSystemBase<T, K> в контексте new K().

Ответ 2

вы не можете создать экземпляр абстрактного класса