Tôi đã đoạn mã sauSử dụng EnumMemberAttribute và làm chuyển đổi chuỗi tự động
[DataContract]
public enum StatusType
{
[EnumMember(Value = "A")]
All,
[EnumMember(Value = "I")]
InProcess,
[EnumMember(Value = "C")]
Complete,
}
Tôi muốn làm như sau:
var s = "C";
StatusType status = SerializerHelper.ToEnum<StatusType>(s); //status is now StatusType.Complete
string newString = SerializerHelper.ToEnumString<StatusType>(status); //newString is now "C"
tôi đã thực hiện phần thứ hai sử dụng DataContractSerializer (xem mã bên dưới), nhưng có vẻ như rất nhiều công việc.
Tôi có thiếu thứ gì đó hiển nhiên không? Ý tưởng? Cảm ơn.
public static string ToEnumString<T>(T type)
{
string s;
using (var ms = new MemoryStream())
{
var ser = new DataContractSerializer(typeof(T));
ser.WriteObject(ms, type);
ms.Position = 0;
var sr = new StreamReader(ms);
s = sr.ReadToEnd();
}
using (var xml = new XmlTextReader(s, XmlNodeType.Element, null))
{
xml.MoveToContent();
xml.Read();
return xml.Value;
}
}
Tôi đã như tùy chọn này vì nó mở rộng Enum: http: // stackoverflow. com/a/4367868/1243316 –