如何处理C#中的抽象枚举?重写属性遇异常求助
解决C#抽象枚举属性的实现问题
解决方法
根据你当前类的实际功能,返回MissionBehaviorType枚举里的具体有效值即可,两种写法都适用:
- 表达式体简洁写法:
public override MissionBehaviorType BehaviorType => MissionBehaviorType.Logic;
(如果你的类对应其他功能,把Logic替换成Other即可)
- 传统get属性写法:
public override MissionBehaviorType BehaviorType { get { return MissionBehaviorType.Other; } }
错误原因解析
- VS自动生成的
throw new NotImplementedException()只是占位代码,它仅用于提醒你需要自行实现属性的返回逻辑,运行时执行到此处必然抛出异常,因为没有返回实际的枚举值。 - 你写的
return BehaviorType会触发无限循环:当外部访问这个属性的getter时,代码会再次调用BehaviorType的getter,相当于自身无限递归调用,直到栈内存耗尽,最终抛出栈溢出异常。 BehaviorType是抽象属性,父类仅定义了该属性的接口要求,子类必须提供具体实现——也就是明确返回枚举中的某个有效值,不能仅保留占位代码或错误的自引用。
内容的提问来源于stack exchange,提问作者Lawrence H
相关产品推荐
相关产品推荐

