Điều này có thể được hiển thị tốt nhất với một ví dụ. Tôi có một enum với các thuộc tính:Bất cứ ai cũng biết một cách nhanh chóng để có được các thuộc tính tùy chỉnh trên một giá trị enum?
public enum MyEnum {
[CustomInfo("This is a custom attrib")]
None = 0,
[CustomInfo("This is another attrib")]
ValueA,
[CustomInfo("This has an extra flag", AllowSomething = true)]
ValueB,
}
Tôi muốn để có được những thuộc tính từ một ví dụ:
public CustomInfoAttribute GetInfo(MyEnum enumInput) {
Type typeOfEnum = enumInput.GetType(); //this will be typeof(MyEnum)
//here is the problem, GetField takes a string
// the .ToString() on enums is very slow
FieldInfo fi = typeOfEnum.GetField(enumInput.ToString());
//get the attribute from the field
return fi.GetCustomAttributes(typeof(CustomInfoAttribute ), false).
FirstOrDefault() //Linq method to get first or null
as CustomInfoAttribute; //use as operator to convert
}
Vì đây là sử dụng phản ánh Tôi mong đợi một số sự chậm chạp, nhưng có vẻ như lộn xộn để chuyển đổi các enum giá trị cho một chuỗi (phản ánh tên) khi tôi đã có một thể hiện của nó.
Có ai có cách nào tốt hơn không?
Bạn đã so sánh với 'Enum.GetName()' chưa? –