使用反射获取列表属性类型

时间:2015-10-21 14:10:11

标签: c# reflection

我想要使用反射获取列表模型属性类型。我有一个模型列表,我需要每个list属性的类型

public class Params
{
public class AnalitikButceKodlariListesiOutput
        {
            public string KOD { get; set; }
            public string KOD_01 { get; set; }
            public string KOD_02 { get; set; }
            public string KOD_03 { get; set; }
            public string KOD_04 { get; set; }
            public string BUTCE_ADI { get; set; }
            public double YIL { get; set; }
        }

public class AnalitikButceKodlariListesiYilOutput : AnalitikButceKodlariListesiOutput
        {
        }
}
List<WebParameters.Params.AnalitikButceKodlariListesiYilOutput> list = new List<WebParameters.Params.AnalitikButceKodlariListesiYilOutput>();

WebParameters.Params.AnalitikButceKodlariListesiYilOutput item = new WebParameters.Params.AnalitikButceKodlariListesiYilOutput()
            {
                KOD = "a",
                KOD_01 = "",
                KOD_02 = "d",
                KOD_03 = "c",
                KOD_04 = "d",
                BUTCE_ADI = "e",
                YIL = 2015
            };

我试试这个,但没有成功。

foreach (var pObject in list)
            {
                foreach (var item2 in pObject.GetType().GetProperties())
                {
                       var type = pObject.GetType().GetProperty(item2.Name).GetType().Name;
                }
             }

1 个答案:

答案 0 :(得分:1)

您可以调用GetProperty提供一些绑定标记,这样做会更好:

pObject.GetType().GetProperty(item2.Name, BindingFlags.Public | BindingFlags.Instance).GetType().Name;
顺便说一句,我怀疑你正在寻找获得属性的类型,而pObject.GetType()会给你PropertyInfo的类型,而不是声明的属性类型。请改用PropertyInfo.PropertyType

string propertyTypeName = pObject.GetType()
         .GetProperty(item2.Name, BindingFlags.Public | BindingFlags.Instance)
         .PropertyType
         .Name;