2017-10-23 19 views
4

SkiaSharp.SKColors構造体には事前定義された色のセットがあります。それらは、タイプSKColorの静的フィールドとして公開されています。構造体の定義済みの色を色のリストに変換するにはどうすればいいですか?

これらのフィールドを抽出し、SKColorのリストを作成します。私の試みは以下の通りですが、コードに記載された時点で何をすべきかわかりません。ここで

using SkiaSharp; 
using System; 
using System.Collections.Generic; 
using System.Reflection; 

namespace Example 
{ 
    class Program 
    { 
     static void Main() 
     { 
      Type type = typeof(SKColors); 
      FieldInfo[] fis = type.GetFields(BindingFlags.Static | BindingFlags.Public); 
      List<SKColor> colors = new List<SKColor>(); 

      foreach(FieldInfo fi in fis) 
      { 
       //colors.Add(fi.WhatIsThis); // The point in question 
      } 
     } 
    } 
} 

SKColorsの抜粋です: FieldInfoを使用して

// 
// Just contains various utility colors 
// 
// Author: 
// Miguel de Icaza 
// 
// Copyright 2016 Xamarin Inc 
// 
using System; 
namespace SkiaSharp 
{ 
    public struct SKColors 
    { 
     public static SKColor Empty => new SKColor (0x00000000); 
     public static SKColor AliceBlue = new SKColor (0xFFF0F8FF); 
     public static SKColor AntiqueWhite = new SKColor (0xFFFAEBD7); 
     public static SKColor Aqua = new SKColor (0xFF00FFFF); 
     public static SKColor Aquamarine = new SKColor (0xFF7FFFD4); 
     public static SKColor Azure = new SKColor (0xFFF0FFFF); 
     public static SKColor Beige = new SKColor (0xFFF5F5DC); 
     public static SKColor Bisque = new SKColor (0xFFFFE4C4); 
     public static SKColor Black = new SKColor (0xFF000000); 
     public static SKColor BlanchedAlmond = new SKColor (0xFFFFEBCD); 
     public static SKColor Blue = new SKColor (0xFF0000FF); 
     public static SKColor BlueViolet = new SKColor (0xFF8A2BE2); 
     public static SKColor Brown = new SKColor (0xFFA52A2A); 
     public static SKColor BurlyWood = new SKColor (0xFFDEB887); 

     // trimmed for the sake of brevity 
    } 
} 
+2

を参照してください'(SKColor)fi.GetValue(ヌル) – NotADeveloper

答えて

6

、あなただけではない、その実際の値に、フィールドへの参照を保持しています。

代わりにこれを試してみてください:

var colors = typeof(SKColors) 
       .GetFields(BindingFlags.Static | BindingFlags.Public) 
       .Select(fld => (SKColor)fld.GetValue(null)) 
       .ToList(); 

は `MSDN

関連する問題