让 AppSettingsReader 询问值的类型和 return 一个非特定类型的对象有什么意义?

What's the point in having AppSettingsReader ask for the value's type and return a no-specific-type object?

我不明白为什么框架公开 AppSettingsReader.GetValue,签名是:

public object GetValue(string key, Type type);

询问设置值的类型,returns非强制转换object?! 询问类型而不公开泛型类型转换值有什么意义?!

我想知道为什么他们没有“完成”这项工作。

如果我们已经在谈论完成这项工作,也许下面应该是我们想要的:

public T GetValue<T>(string key, T defaultValue = default(T)) where T : class
{
    object value = _appSettingsReader.GetValue(key, typeof(T));
    T castedValue;
    try
    {
        castedValue = (T) Convert.ChangeType(value, typeof(T));
    }
    catch (Exception)
    {
        castedValue = defaultValue;
    }

    return castedValue;
}

What's the point in asking for the type and not exposing a generic type-casted value ?!

嗯,我猜他们在泛型时代之前就写了那个代码。自 .NET 1.1 以来就存在此方法,因此绝对是前泛型。

询问类型的关键在于,在该方法的背后,它确实将值转换为正确的类型。它只是不暴露于外界。它必须知道如何读取 XML 并将其转换为特定类型。

当然,他们可以(也许应该)重写该代码,使其使用泛型。这将使我们所有人受益。