public static T ConfigSetting<T>(string settingName)
{
object value = ConfigurationManager.AppSettings[settingName];
return (T) Convert.ChangeType(value, typeof(T));
}
我并不完全相信这一切都是个好主意,请注意......
270
你可以使用 Convert.ChangeType() :
public static T ConfigSetting<T>(string settingName)
{
return (T)Convert.ChangeType(ConfigurationManager.AppSettings[settingName], typeof(T));
}
0
您必须将方法返回值的类型转换为在调用期间传递给方法的Generic类型 .
public static T values<T>()
{
Random random = new Random();
int number = random.Next(1, 4);
return (T)Convert.ChangeType(number, typeof(T));
}
7 回答
你需要使它成为通用方法,如下所示:
但调用者必须指定他们期望的类型 . 然后,您可以使用Convert.ChangeType,假设支持所有相关类型:
我并不完全相信这一切都是个好主意,请注意......
你可以使用
Convert.ChangeType()
:您必须将方法返回值的类型转换为在调用期间传递给方法的Generic类型 .
您需要为通过该方法返回的值传递类型为casteable的类型 .
如果您希望返回一个非类型类型的值,您可能必须更改代码或确保传递一个类型,该类型对于方法的返回值是类型的 . 所以,这种方法并没有被推荐 .
请尝试以下代码:
我在整个代码中执行此操作,并想要一种方法将其放入方法中 . 我想在这里分享一下,因为我没有必要使用Convert.ChangeType作为我的返回值 . 这可能不是最佳做法,但它对我有用 . 此方法接受泛型类型的数组和要添加到数组末尾的值 . 然后复制数组,并剥离第一个值,并将方法中的值添加到数组的末尾 . 最后一件事是我返回通用数组 .
有很多方法可以做到这一点(按优先级列出,具体针对OP的问题)
Note - 如果演员表无效(您的情况),这将抛出错误 . 如果您不确定类型转换,我不建议这样做,而是选择选项3 .
Note - T是预期的类型,请注意这里的约束(U的类型必须是IConvertible以保存我们的错误)
创建一个函数并传递put参数作为泛型类型 .