我正在尝试使用C#中的泛型参数来转换对象
(foo<mypara>)obj
mypara
是通用参数。
public class foo<T>
{
public string name {get;set;}
public func<T> value {get;set;}
}
var mypara = myfoo.GetType().GetGenericArguments();
其中mypara.Name
的值为"int"
或"string"
,实际上是该类型的字符串表示形式。
但我怎样才能获得真正的mypara类型?
答案 0 :(得分:0)
代码示例会有所帮助,但我认为您需要的只是obj.GetType()
?这就是你得到一个对象类型的方法。
答案 1 :(得分:0)
你可以这样做:
if (value != null)
{
if (value.GetType().IsGenericType == true
&& value.GetType().GetGenericArguments().Length >= 0)
{
IList _valuesList = null;
if (value.GetType().GetGenericArguments()[0].ToString().ToLower().Contains("int"))
{
_valuesList = value as List<int>;
}
else if (value.GetType().GetGenericArguments()[0].ToString().ToLower().Contains("decimal"))
{
_valuesList = value as List<decimal>;
}
else if (value.GetType().GetGenericArguments()[0].ToString().ToLower().Contains("double"))
{
_valuesList = value as List<double>;
}
else if (value.GetType().GetGenericArguments()[0].ToString().ToLower().Contains("string"))
{
_valuesList = value as List<string>;
}
}
}
价:
Get generic instance generic type using reflection
Reflection a properties of type of generic list
Reflection and generic types
答案 2 :(得分:0)
使用反射。任何对象上的GetType()都将获得该类型的名称。需要更多的反射来使它成为对象类型。