How to get properties of a class in WinRT

后端 未结 2 933
一整个雨季
一整个雨季 2020-12-16 15:34

I am writing a Windows 8 application in C# and XAML. I have a class with many properties of the same type that are set in the constructor the same way. Instead of writing an

相关标签:
2条回答
  • 2020-12-16 15:47

    Try this:

    public static IEnumerable<PropertyInfo> GetAllProperties(this TypeInfo type)
    {
        var list = type.DeclaredProperties.ToList();
    
        var subtype = type.BaseType;
        if (subtype != null)
            list.AddRange(subtype.GetTypeInfo().GetAllProperties());
    
        return list.ToArray();
    }
    

    and use it like this:

    var props = obj.GetType().GetTypeInfo().GetAllProperties();
    

    Update: Use this extension method only if GetRuntimeProperties is not available because GetRuntimeProperties does the same but is a built-in method.

    0 讨论(0)
  • 2020-12-16 15:52

    You need to use GetRuntimeProperties instead of GetProperties:

    var properties = this.GetType().GetRuntimeProperties();
    // or, if you want only the properties declared in this class:
    // var properties = this.GetType().GetTypeInfo().DeclaredProperties;
    foreach (var property in properties)
    {
        if (property.PropertyType == typeof(Tuple<string,string>))
        property.SetValue(this, j.GetTuple(property.Name));
    }
    
    0 讨论(0)
提交回复
热议问题