use*_*312 4 c# reflection propertyinfo
如何通过反射区分值类型,可空值类型,枚举,可空枚举,引用类型?
enum MyEnum
{
One,
Two,
Three
}
class MyClass
{
public int IntegerProp { get; set; }
public int? NullableIntegerProp { get; set; }
public MyEnum EnumProp { get; set; }
public MyEnum? NullableEnumProp { get; set; }
public MyClass ReferenceProp { get; set; }
}
class Program
{
static void Main(string[] args)
{
Type classType = typeof(MyClass);
PropertyInfo propInfoOne = classType.GetProperty("IntegerProp");
PropertyInfo propInfoTwo = classType.GetProperty("NullableIntegerProp");
PropertyInfo propInfoThree = classType.GetProperty("EnumProp");
PropertyInfo propInfoFour = classType.GetProperty("NullableEnumProp");
PropertyInfo propInfoFive = classType.GetProperty("ReferenceProp");
propInfoOne.???
...............
...............
}
}
Run Code Online (Sandbox Code Playgroud)
在propInfo中,哪些信息可以被检索?
以下是检查enum,nullable,primitve和value类型的方法;
Console.WriteLine(propInfoOne.PropertyType.IsPrimitive); //true
Console.WriteLine(propInfoOne.PropertyType.IsValueType); //false, value types are structs
Console.WriteLine(propInfoThree.PropertyType.IsEnum); //true
var nullableType = typeof (Nullable<>).MakeGenericType(propInfoThree.PropertyType);
Console.WriteLine(nullableType.IsAssignableFrom(propInfoThree.PropertyType)); //true
Run Code Online (Sandbox Code Playgroud)
请注意,值类型和基元是不同的东西.基元只是映射到类型的shorthands(例如bool> System.Boolean).值类型按值传递; 它们是struct(ure)而不是类.
| 归档时间: |
|
| 查看次数: |
2081 次 |
| 最近记录: |