必须有一个公共无参数构造函数,它没有'

本文关键字:构造函数 有一个 参数 | 更新日期: 2023-09-27 17:50:00

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'必须有一个公共无参数构造函数,以便在泛型类'EventSystemBase'中作为参数'K'使用"

public abstract class EventSystemBase<T, K> : AutomatizableEvent
    where T : Event
    where K : AutomatizableEvent, new()
我的问题是……不AutomatizableEvent 做有一个公共无参数构造函数??

必须有一个公共无参数构造函数,它没有'

错误描述错误,但错误是正确的

由于where K : new()的约束,

AutomatizableEvent不能作为通用参数K。抽象类不满足这个约束。

抽象类的构造函数总是受到有效的保护,因为抽象只能作为派生类的基子对象创建,构造函数同样只能由派生类的构造函数调用,并且只能在构造函数链中调用。特别是EventSystemBase<T, K>不能在new K()上下文中使用

不能实例化抽象类