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();