读书人

怎么使用反射确定一个属性是否实现了I

发布时间: 2012-01-07 21:41:55 作者: rapoo

如何使用反射确定一个属性是否实现了IList接口,如何确定元素量为空的集合的元素类型。
如何使用反射确定一个属性是否实现了IList接口,如何确定元素量为空的集合的元素类型。

如有个属性public List<int> Test{get{return new List<int>;}}
在使用反射的GetType().GetPropety()时如何确定Test实现了IList接口

如果Test.Count==0,如何确定其元素类型(即结果应为typeof(int))

[解决办法]
顶~~~~~~~~~~~
[解决办法]
这个不懂 UP
[解决办法]
尝试下用:

C# code
 
Type typeInterface = fileType.GetInterface("System.Collections.Generic.IList", true);
If (typeInterface==null)
return false;
else
return true;

用类似的代码看看
[解决办法]
C# code
namespace ConsoleApplication1{    class Program    {        static void Main(string[] args)        {            foreach (PropertyInfo pi in typeof(Program).GetProperties(BindingFlags.Instance | BindingFlags.Public))            {                if (Array.IndexOf(pi.PropertyType.GetInterfaces(), typeof(IList)) > -1)//查找实现了Ilist接口的属性                    Console.WriteLine(pi.Name);                if (pi.PropertyType.IsGenericType)//如果该属性是泛型                {                    foreach (Type t in pi.PropertyType.GetGenericArguments())//遍历输出属性的每个泛型参数类型                        Console.WriteLine(t.FullName);                }            }        }        public List<int> Test { get { return new List<int>(); } }    }}
[解决办法]
关注一下

读书人网 >C#

热点推荐