使用C#中的反射将一个类的数据类型转换为其他类

时间:2014-03-25 08:44:18

标签: c# system.reflection

我有一个班级

namespace MyNamespace1
{
    class MyClass
    {
        public string MyName { get; set; }
        public int? MaxHeaderLength { get; set; }
        public System.Collections.Generic.List<MyClass.ViewModel> Preferences { get; set; }
    }
}

namespace MyNamespace2
{
    internal class myClass1
    {
        public static void Main(string[] args)
        {
            var properties = loading assembly of the MyClass of MyNamespace1
            var prop = properties.GetProperties();
            foreach (var propertyInfo in prop)
            {
                Console.WriteLine(propertyInfo.PropertyType.FullName);

            }
        }
    }
}

当我想使用反射

在运行时读取属性时

我的类型为

  

System.String,

     

System.Nullable`1 [[System.Int32,mscorlib,Version = 4.0.0.0,   Culture = neutral,PublicKeyToken = b77a5c561934e089]],

     

System.Collections.Generic.List`1 [[System.Web.Mvc.SelectListItem,   System.Web.Mvc,Version = 3.0.0.0,Culture = neutral,   公钥= 31bf3856ad364e35]]),

但我想检索为

string,

int?,

System.Collections.Generic.List<MyClass.ViewModel>

任何人都可以给我解决方案。

1 个答案:

答案 0 :(得分:0)

stringint?List<MyClass.ViewModel>都是C#构造。他们不在.NET本身。

因此,您只需构建一个查找表或巨型switch即可将类型名称转换为.NET关键字。