2013-07-02 2 views
0

У меня есть следующие три метода:Как бы реорганизовать эти системные методы, возвращающие перечисление из строки?

private static Temperature.TemperatureScale GetTemperatureEnumFromString(string enumString) 
    { 
     return (Temperature.TemperatureScale) 
      Enum.Parse(typeof (Temperature.TemperatureScale), enumString); 
    } 

    private static Stress.StressScale GetStressEnumFromString(string enumString) 
    { 
     return (Stress.StressScale) 
      Enum.Parse(typeof (Stress.StressScale), enumString); 
    } 

    private static VolumetricFlow.VolumetricFlowScale GetVolumetricFlowEnumFromString(string enumString) 
    { 
     return 
      (VolumetricFlow.VolumetricFlowScale) 
       Enum.Parse(typeof (VolumetricFlow.VolumetricFlowScale), 
          enumString); 
    } 

Я пытаюсь понять, C# понятия как динамические ключевые слова и общего типа литья. Я бы очень хотел реорганизовать эти три метода в один, потому что в противном случае мне придется использовать еще около 5 методов, которые еще должны быть написаны для других шкал системных систем. У кого-нибудь есть хороший способ реорганизовать эти методы в один? Если да, можете ли вы также объяснить, как это работает? Благодаря!

ответ

1

Что-то вроде этого?

public static T GetValue<T>(string enumString) 
{ 
    return (T)Enum.Parse(typeof(T),enumString); 
} 

var val = GetValue<Stress.StressScale>("..."); 
+0

Awesome, кажется, работает! Благодаря! Что нужно, чтобы быть осторожным при использовании этого родового типа? –