必须有一个公共无参数构造函数,它没有'
本文关键字:构造函数 有一个 参数 | 更新日期: 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()
上下文中使用
不能实例化抽象类