我创建了一个static void Method (Enum myEnum)
,但我只想提供某些枚举类型,或者在编译时遇到我的错误。由于我正在尝试使用我的代码(使用游戏机制作为着色器变体),我需要随心所欲地更改接受的类型,尽可能少地维护Method
类。
基本上,我正在努力处理枚举,我可以非常轻松地使用类(创建一个共享基类用作参数类型)。首先想到的是属性:
这是我梦寐以求的梦想代码:
[AttributeUsage(AttributeTargets.Enum)]
public class ShaderVariant : System.Attribute { }
void Method (T myEnum) where T : [ShaderVariant]Enum { }
我目前的选择是:
Method
类,注定要为项目的每个细微更改反复提交相同的文件。但是在编译时工作。这个问题是关于C#如何运作。我知道创建包装器重载更容易,但是对处理器方法进行调整以支持基本上是参数属性的感觉是错误的。
答案 0 :(得分:0)
枚举只是常数的简称。 如果一个枚举的成员是不同的,因为有些人必须在编译时可以接受一个方法,而有些则不行。那么也许你需要两个枚举。一个人可以接受一个方法,一个人拥有所有可能的选择。
枚举是非常简单的结构,没有继承。如果你觉得你需要继承,那么你可能不应该使用Enum并使用类。