从Xamarin.Forms.Color中获取所有颜色的属性

时间:2017-10-25 12:40:43

标签: xamarin reflection

让我们说我想获得" R"来自Xamarin.Forms.Color中所有Colors的组件。我试过这个:

var RComponentList = typeof(Color).GetRuntimeFields(). Select((f) => f.GetType().GetRuntimeProperty("R"));

但结果是一个空列表。就像它设法找到颜色而不是" R"他们每个人的财产。我怎样才能做到这一点?谢谢。

2 个答案:

答案 0 :(得分:0)

var fields = typeof(Color).GetRuntimeFields()
    .Where(x => x.FieldType == typeof(Color) && x.IsInitOnly)
    .Select(x => ((Color)x.GetValue(null)).R);

答案 1 :(得分:0)

感谢Will Decker的回答。我想要实现的是获取所有颜色的名称及其RGB值。最后我这样做了:

 private void PopulateColorsList()
    {
        _colors = new Dictionary<string, (double R, double G, double B)>();
            foreach (var c in typeof(Color).GetRuntimeFields().Where(f => f.FieldType == typeof(Color) && f.IsInitOnly))
            {
                var color = ((Color)c.GetValue(null));
                _colors.Add(c.Name, (color.R, color.G, color.B));
            }
        }
    }