C# 如何将结构中预定义的颜色转换为颜色列表?

C# 如何将结构中预定义的颜色转换为颜色列表?,c#,.net-core,system.reflection,skiasharp,C#,.net Core,System.reflection,Skiasharp,在SkiaSharp.SKColorsstruct中有一组预定义的颜色。它们作为类型为SKColor的静态字段公开 我想提取这些字段并创建SKColor的列表。我的尝试如下,但在代码中指出的点上我不知道该做什么 using SkiaSharp; using System; using System.Collections.Generic; using System.Reflection; namespace Example { class Program { st

SkiaSharp.SKColors
struct中有一组预定义的颜色。它们作为类型为
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
            }
        }
    }
}

使用
FieldInfo
,您只保留对字段的引用,而不是对其实际值的引用

请尝试以下方法:

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

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