1. ホーム
  2. c#

[解決済み] 変数を実行時にしかわからない型に変換する?

2023-02-27 21:56:06

質問

foreach (var filter in filters)
{
    var filterType = typeof(Filters);
    var method = filterType.GetMethod(filter, BindingFlags.IgnoreCase | BindingFlags.Public | BindingFlags.Static);
    if (method != null)
    {
        var parameters = method.GetParameters();
        Type paramType = parameters[0].ParameterType;
        value = (string)method.Invoke(null, new[] { value });
    }
}

どのようにすれば valueparamType ? valuestring , paramType のような基本的な型になるのでしょう。 int , string または、多分 float . 変換が不可能な場合は例外を投げるのは冷静です。

どのように解決するのですか?

使用している型は、すべて IConvertible . そのため ChangeType .

 value = Convert.ChangeType(method.Invoke(null, new[] { value }), paramType);