【问题标题】:error CS0117: 'BindingFlags' does not contain a definition for 'GetProperty'错误 CS0117:“BindingFlags”不包含“GetProperty”的定义
【发布时间】:2015-12-31 20:35:01
【问题描述】:

我正在尝试将 Unity 5.3.1 单声道项目移植到 Windows 应用商店。这是我无法完全解析的代码行:

            var pia = T.GetTypeInfo().GetProperties(BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.FlattenHierarchy | BindingFlags.GetProperty);

BindingFlags.GetProperty 似乎不存在。根据 .Net 4.5 文档,这个枚举属性应该在那里。我不知道如果我放弃 GetProperty 方法,代码会发生什么。

Unity3D 会编译一个等价的吗?

【问题讨论】:

    标签: c# unity3d mono uwp


    【解决方案1】:

    您需要让您的代码区分它所运行的平台。在编辑器中,Unity 将针对 Mono 框架编译您的代码,而在为 WinStore 构建期间,它将针对 .NET 4 或其他东西进行编译。 无论您编写什么,您的代码都不会针对这些平台之一进行编译。

    您需要为这两个平台使用不同的代码。例如:

    #if UNITY_METRO
    var pia = T.GetTypeInfo().GetProperties(BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.FlattenHierarchy | BindingFlags.GetProperty);
    #else
    var pia = T.GetType().GetProperties(...);
    #endif
    

    【讨论】:

    • 托马斯,我已经这样做了。 :-) 看起来这个枚举的所有调用成员都不存在。
    • (CreateInstance、GetField、SetField、GetProperty、SetProperty)。我尝试编译一个 Universal 10 应用程序。
    猜你喜欢
    • 2019-10-30
    • 1970-01-01
    • 1970-01-01
    • 2012-12-17
    • 2011-02-18
    • 1970-01-01
    • 2018-09-29
    • 2019-11-02
    • 1970-01-01
    相关资源
    最近更新 更多