我的一个项目,有代表的视频格式的自定义标识符字符串值类型/结构。 在这种情况下,它会包含内容类型的字符串,但可以改变。
我用一个结构,因此它可以当它是通过周围被强类型,并在初始字符串值执行一些完整性检查。 实际的字符串值可以是任何东西,并通过外部插件库提供这样一个数字enum
不适用。
public struct VideoFormat {
private string contentType;
public VideoFormat(string contentType) {
this.contentType = contentType;
}
public string ContentType {
get { return this.contentType; }
}
public override string ToString() {
return this.contentType;
}
// various static methods for implicit conversion to/from strings, and comparisons
}
由于有几个非常常见的格式,我已经暴露了这些静态只读默认值的字段。
public static readonly VideoFormat Unknown = new VideoFormat(string.Empty);
public static readonly VideoFormat JPEG = new VideoFormat("image/jpeg");
public static readonly VideoFormat H264 = new VideoFormat("video/h264");
这似乎在大多数情况下工作,除了开关部件,它说的值必须是一个常数。 是否有任何方式我可以使用这种类型的,并在开关块直接在静态值的没有内部构件或上开关.ToString()
覆盖?
有没有办法做到这一点不使用指定的设计时间更好的整体方法enum
与数值或普通字符串常量?