检查字符串类型的类成员的值,该类成员只能假设几个值
本文关键字:成员 几个 假设 类型 字符串 检查 | 更新日期: 2023-09-27 18:25:33
通过对XML模式文件运行xsd /c
,我创建了以下partial
类:
[System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "4.0.30319.33440")]
[System.SerializableAttribute()]
[System.Diagnostics.DebuggerStepThroughAttribute()]
[System.ComponentModel.DesignerCategoryAttribute("code")]
[System.Xml.Serialization.XmlTypeAttribute(Namespace="example.com")]
public partial class FRUITQueryType {
private string fruitTypeField;
/// <remarks/>
[System.Xml.Serialization.XmlAttributeAttribute()]
public string FruitType {
get {
return this.fruitTypeField;
}
set {
this.fruitTypeField = value;
}
}
}
虽然类型是string
,但我知道该字段只有三个可能的值,即Banana
、Orange
和Blueberry
。
在程序的另一部分,我检查该字段的内容:
// assume fruit is an instance of FRUITQueryType
if (fruit.FruitType == "Banana")
{
// do something
}
然而,由于字段只有几个可能的值,因此这种方法感觉不到整洁。我认为如果我能沿着以下几行检查字段的值会更好:
if (fruit.FruitType == FRUITQueryType.FruitType.Banana) // or something similar
实现这一点有意义吗?如果是,最好的方法是什么?通过创建一个包含Banana
、Orange
和Blueberry
的三个静态成员的类/结构?
我想出了一个临时的解决方案——虽然不理想,但能完成任务。
我将这三个字符串定义为扩展类中的常量:
public partial class FRUITQueryType
{
public const string Banana = "Banana";
public const string Orange = "Orange";
public const string Blueberry = "Blueberry";
// ...
}
这样检查就变成了:
if (fruit.FruitType == FRUITQueryType.Banana)
我必须说,我对这个解决方案并不完全满意,因为它感觉像是把课堂弄得一团糟。然而,如果我在一个子类/结构中定义了常量(比如public struct FruitChoice
),那么检查也会变得更加困难(if (fruit.FruitType == FRUITQueryType.FruitChoice.Banana)
)
有人想出一个更整洁的方法吗?