私のプロジェクトの 1 つに、ビデオ形式のカスタム識別子文字列を表す値の型/構造体があります。この場合、コンテンツ タイプの文字列が含まれますが、これは異なる場合があります。
構造体を使用したので、渡されるときに厳密に型指定でき、初期文字列値に対していくつかの健全性チェックを実行できます。実際の文字列値は任意であり、外部プラグイン ライブラリによって提供されるため、数値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");
これは、値が定数でなければならないという switch ブロックを除いて、ほとんどの場合に機能するようです。.ToString()
内部メンバーまたはオーバーライドをオンにせずに、この型と静的値をスイッチ ブロックで直接利用する方法はありますか?
enum
数値またはプレーン文字列定数で指定された設計時間を使用せずにこれを行うためのより良い全体的な方法はありますか?