Mar*_*ark 3 .net c# inheritance enums abstract
有没有办法在C#中创建一个(protected)enum abstract?
基类示例:
protected abstract enum commands{}; //CS0106
protected abstract void useCommands(commands meh);
Run Code Online (Sandbox Code Playgroud)
这不会编译,因为" abstract对此项无效".
是否有一种工作方式来实现所期望的行为?
enum是关键字,而不是类名:
// MyCommand is a class name while 'enum' is a keyword
public enum MyCommand {
None,
Something
}
Run Code Online (Sandbox Code Playgroud)
所以你的代码应该是
// Enum (but not enum) is a class name:
// Enum is an abstract class for any enum (including MyCommand)
protected abstract Enum commands {
get;
};
Run Code Online (Sandbox Code Playgroud)
可能的抽象属性实现可能是:
protected override Enum commands {
get {
return MyCommand.None;
}
}
Run Code Online (Sandbox Code Playgroud)
据我了解,您正在尝试制作某种类似于状态机的抽象类。您有一个enum存储命令,希望您的派生类进行定义。
这可以通过使用泛型类并将您enum作为模板类型传递来实现。这是如何实现此目的的示例。
public abstract baseClass <commandType>
{
protected abstract void useCommands (commandType meh);
.
.
.
}
Run Code Online (Sandbox Code Playgroud)
以后可以派生使用它,如下所示:
public enum commands {stop, wait, go};
public class derivedClass : baseClass <commands>
{
protected override void useCommands (commands meh)
{
.
.
.
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
9157 次 |
| 最近记录: |