传递一个泛型方法中使用的类型列表
本文关键字:列表 类型 泛型方法 一个 | 更新日期: 2023-09-27 18:03:02
给定类型列表:
public class TypeLists
{
public static List<Type> types
{
get
{
return new List<Type>() { typeof(ValueBool), typeof(ValueInt), typeof(ValueDouble), typeof(ValueString) };
}
}
}
我想传递这个或其他列表,以便在一个方法中通用地使用它们,该方法将以以下方式强制转换伴随的对象参数:
public static SettingValueUnit UsingAType<T>(object value)
{
var a = (T)value;
}
我尝试实现它的使用:
foreach (Type t in TypeLists.types)
{
SettingValueUnit ValueUnit = UsingAType<t>(D.SettingValue.value);
}
但是我得到以下错误
错误1 't'无法访问,因为它的保护级别
我被限制在。net 3.5紧凑框架。
我对你得到的错误方法的性质感到惊讶,而不是对你首先得到错误的事实感到惊讶。
不能将泛型参数指定为表达式——其目的是使其成为类型的编译时规范。如果你真的想这样做,你需要使用reflection:
// The ... is because we don't know the name of the type containing the method
Method method = typeof(...).GetMethod("UsingAType").MakeGenericMethod(t);
method.Invoke(...);