21
สร้างวิธีการทั่วไป จำกัด T เพื่อ Enum
ฉันกำลังสร้างฟังก์ชั่นเพื่อขยายEnum.Parseแนวคิดที่ว่า อนุญาตให้แยกวิเคราะห์ค่าเริ่มต้นในกรณีที่ไม่พบค่า Enum เป็นกรณีตาย ดังนั้นฉันจึงเขียนสิ่งต่อไปนี้: public static T GetEnumFromString<T>(string value, T defaultValue) where T : Enum { if (string.IsNullOrEmpty(value)) return defaultValue; foreach (T item in Enum.GetValues(typeof(T))) { if (item.ToString().ToLower().Equals(value.Trim().ToLower())) return item; } return defaultValue; } ฉันได้รับข้อผิดพลาดไม่สามารถเป็นคลาสพิเศษSystem.Enumได้ ยุติธรรมเพียงพอ แต่มีวิธีแก้ปัญหาเพื่อให้ Generic Enum หรือฉันจะต้องเลียนแบบParseฟังก์ชั่นและส่งประเภทเป็นแอตทริบิวต์ซึ่งบังคับให้ความต้องการมวยที่น่าเกลียดในรหัสของคุณ แก้ไขข้อเสนอแนะด้านล่างทั้งหมดได้รับการชื่นชมอย่างมากขอบคุณ ตั้งรกรากอยู่ที่ (ฉันออกจากลูปเพื่อรักษาความรู้สึกตัวพิมพ์เล็กและตัวพิมพ์ใหญ่ - ฉันใช้นี่เมื่อแยกวิเคราะห์ XML) public static class …