我有一个名为MettingRoom的课程。
其数据成员如下:
Boolean hasProjector,
PropertyOptions property
PropertyOptions就像这样
public enum PropertyOptions
{
[EnumMember]
Off = 0,
[EnumMember]
Automatic = 1,
[EnumMember]
On = 2,
}
现在我有一个函数来为这些数据成员设置值
MeetingRoom setOptions(string hasProjectorValue, string propertyValue)
{
return new MeetingRoom()
{
hasProjector = bool.Parse(hasProjectorValue),
property = ???,
}
}
属性值可以是On,Off,Automatic。 我的问题是如何为数据成员'属性'?
分配值答案 0 :(得分:1)
您需要通过解析将propertyValue
字符串转换为PropertyOptions
枚举:
property = (VotingValue)Enum.Parse(typeof(PropertyOptions), propertyValue);
但是,如果解析失败,上面将抛出异常。您可能希望使用Enum.TryParse
代替:
MeetingRoom setOptions(string hasProjectorValue, string propertyValue)
{
PropertyOptions prop;
Enum.TryParse(propertyValue, true, out prop)
return new MeetingRoom()
{
hasProjector = bool.Parse(hasProjectorValue),
property = prop
}
}
请参阅MSDN
答案 1 :(得分:0)
如果Enum.TryParse
不够(例如你需要映射过时的值),那么使用某种映射是个不错的主意,即
static class PropertyOptionsConvertor
{
private static Dictionary<string, PropertyOptions>() Mapping = new Dictionary<string, PropertyOptions>(StringComparer.OrdinalIgnoreCase)
{
{ "on", PropertyOptions.On },
{ "off", PropertyOptions.Off },
// other members...
};
public static bool GetOptions(string value, out PropertyOptions result)
{
if (Mapping.TryGetValue(value, out result))
{
return true;
}
result = default(PropertyOptions);
return false;
}
}
您也可以制作一个通用版本,并将其映射到任何事情。然后通过构造函数提供内部映射。