1. ホーム
  2. c#

[解決済み】メソッドの戻り値の型を汎用的にする方法は?

2022-04-17 19:16:02

質問

このメソッドを汎用的にして、文字列、bool、int、doubleを返せるようにする方法はありますか? 今は文字列を返していますが、設定値として "true" や "false" を見つけることができれば、例えば bool を返したいのです。

    public static string ConfigSetting(string settingName)
    {  
         return ConfigurationManager.AppSettings[settingName];
    }

解決方法は?

このように、ジェネリックメソッドにする必要があります。

public static T ConfigSetting<T>(string settingName)
{  
    return /* code to convert the setting to T... */
}

しかし 呼び出し側 は、期待する型を指定する必要があります。そうすると Convert.ChangeType 関連するすべての型がサポートされていると仮定すれば。

public static T ConfigSetting<T>(string settingName)
{  
    object value = ConfigurationManager.AppSettings[settingName];
    return (T) Convert.ChangeType(value, typeof(T));
}

でも、これがいいアイデアだとは思っていないんですよ。