Reflection.Typeinfo /反射.Type没有GetProperties/GetFields方法



我想做一个Windows通用应用程序,为Windows 8.1和Windows Phone 8.1。

这是我的问题的一个示例类,我使用int类型作为示例,但错误是存在的,无论我使用的类:

using System;
using System.Collections.Generic;
using System.Reflection;
using System.Text;
namespace myTtrpgHelper
{
    class testClass
    {
        void testMethod()
        {
            int c = new int();
            Type type = c.GetType();
            TypeInfo typeInfo = IntrospectionExtensions.GetTypeInfo(type);
            PropertyInfo[] p = typeInfo.GetProperties();
            PropertyInfo[] p2 = type.getProperties();
            PropertyInfo[] p3 = typeInfo.GetFields();
            PropertyInfo[] p4 = type.GetFields();
        }
    }
}

GetProperties和GetFields都显示错误:

'System.Reflection.TypeInfo' does not contain a definition for 'GetFields' and no extension method 'GetFields' accepting a first argument of type 'System.Reflection.TypeInfo' could be found (are you missing a using directive or an assembly reference?) 

msdn页面http://msdn.microsoft.com/en-us/library/system.reflection.typeinfo.aspx说应该支持,我使用的是visual studio 2013。

您应该使用DeclaredFields属性来获取字段,使用DeclaredProperties来获取属性。随着。net框架的发展,反射api也经历了一些成长的痛苦。MSDN信息似乎不准确。简而言之,在。net的Windows Store应用程序中,TypeInfo继承自MemberInfo而不是Type,所以它不能包含继承的成员GetFields()GetProperties()。虽然Get*和declare *成员都存在于完整的框架中,但对于Windows Store应用程序,你必须使用declare * api。本文详细介绍了。net框架中各种风格的反射api的差异。

相关内容

  • 没有找到相关文章

最新更新