05-10-12, 01:20 PM
كاتب المشاركة : Islam Ibrahim
شكرًا لك.لكن ما دمت قد استخدمت Generics فأنا أفضل في هذه الحالة استخدام Generic TryParse Method الموجودة في الكلاس Enum ولكن تحتاج في هذه الحالة لإضافة Generic Constraint ليكون النوع T عبارة عن Value Type لأن ال Enum هي عبارة عن Value Types :
كود :
[color=#000000][COLOR=#0000bb] [/color][color=#007700]public static class [/color][COLOR=#0000bb]EnumExtensions
[/COLOR][COLOR=#007700]{
public static [/COLOR][color=#0000bb]T ToEnum[/color][color=#007700]<[/color][color=#0000bb]T[/color][color=#007700]>([/color][color=#0000bb]this string enumValue[/color][COLOR=#007700],
[/COLOR][color=#0000bb]bool ignoreCase[/color][COLOR=#007700])
[/COLOR][color=#0000bb]where T [/color][color=#007700]: [/color][COLOR=#0000bb]struct
[/COLOR][COLOR=#007700]{
[/COLOR][color=#0000bb]T value[/color][COLOR=#007700];
if ([/COLOR][color=#0000bb]Enum[/color][color=#007700].[/color][color=#0000bb]TryParse[/color][color=#007700]<[/color][color=#0000bb]T[/color][color=#007700]>([/color][color=#0000bb]enumValue[/color][color=#007700], [/color][color=#0000bb]ignoreCase[/color][color=#007700], [/color][color=#0000bb]out value[/color][COLOR=#007700]))
return [/COLOR][color=#0000bb]value[/color][COLOR=#007700];
return default([/COLOR][color=#0000bb]T[/color][COLOR=#007700]);
}
}
[/COLOR][color=#0000bb][/color][/COLOR]ويمكن استخدامها في هذه الحالة مع أي String بالطريقة التالية , وفي حال لم تكن القيمة المدخلة صحيحة سيقوم بإرجاع القيمة الافتراضية (التي تحمل الفيمة 0 عادةً) .
كود :
[color=#000000][COLOR=#0000bb][/color][color=#007700]var [/color][color=#0000bb]enumValue [/color][color=#007700]= [/color][color=#dd0000]"None"[/color][color=#007700].[/color][color=#0000bb]ToEnum[/color][color=#007700]<[/color][color=#0000bb]DockStyle[/color][color=#007700]>([/color][color=#0000bb]true[/color][COLOR=#007700]);
[/COLOR][color=#0000bb][/color][/COLOR]