我有一个使用反射从实体(T)创建的对象。该对象是我对表的实现。它包含一个列列表,我使用反射从实体中提取它们的属性:
public class Generic_Table<T> : Table
{
...// in ctor
type = this.GetType().GetGenericArguments()[0]; // type of T
BuildColumns(type);
private void BuildColumns(Type type)
{
PropertyInfo[] properties = type.GetProperties();
Columns = new KeyValuePair<string, Type>[properties.Count()];
int i = 0;
foreach (PropertyInfo property in properties)
{
Columns[i++] = new KeyValuePair<string, Type>(property.Name, property.PropertyType);
}
}
我正在寻找一种将PropertyType
值转换为可空类型的方法,以便列中的Type
值为int?
,例如,如果某些属性具有int
因为它
PropertyType
值。
答案 0 :(得分:3)
这将满足您的需求:
Type nullableType = typeof(Nullable<>).MakeGenericType(property.PropertyType);
MakeGenericType
方法接受泛型类型参数的params数组。有关详细信息,请参阅文档:
此外,这篇文章有一个很好的例子,类似于你在这里做的事情: