c# - 获取静态类的第 n 个属性“C#?
问题描述
这里有一个名为“获取类的第 n 个属性”的问题,其中答案不适用于静态类。
这是我的静态类:
namespace MyNameSpace
{
static class MyStaticClass
{
public static byte[] BASIC_IFO = { 0xCC, 0x55, 0xD1, 0x00, 0x00, 0x00 };
public static byte[] DEFINITION = { 0xCC, 0x55, 0xD2, 0x00, 0x00, 0x00 };
public static byte[] GET_PARAMETERS = { 0xFF, 0x55, 0xD3, 0x00, 0x00, 0x00 };
}
}
如何从主类访问此静态类的第 n 个属性的值(在本例中为字节数组)?上面的问题没有解决我的问题。
解决方案
最简单的方法是将数组封装在 KeyValuePair 的集合中。公开一个List<KeyValuePair<string, byte[]>>
被调用的数组,并将您的数组添加到其中:
namespace MyNameSpace
{
static class MyStaticClass
{
public static readonly List<KeyValuePair<string, byte[]>> Arrays = new List<KeyValuePair<string, byte[]>>();
static MyStaticClass()
{
Arrays.Add(new KeyValuePair("BASIC_IFO", new byte[] { 0xCC, 0x55, ... }));
}
}
}
并像这样引用它:
var BASIC_IFO = MyStaticClass.Arrays[0].Value;
...像这样搜索它:
var BASIC_IFO = MyStaticClass.Arrays.FirstOrDefault(kvp => kvp.Key == "BASIC_IFO").Value;
...或将其转换为字典:
var dictArrays = MyStaticClass.Arrays.ToDictionary(p => p.Key, p => p.Value);
var val = dictArrays["BASIC_IFO"][1]; // == 0x55
var val = Arrays[0].Value[1]; // == 0x55
推荐阅读
- php - 如何从字符串中获取 rgb 出现并将它们转换为十六进制?
- node.js - 带有命名参数的“WHERE col IN”
- php - 使用 php 从 mysql 解析 xml longblob
- java - Android JNI 无法使用 dlopen 成功加载库 - 但它曾经
- django - 错误:Pidfile (celerybeat.pid) 已经存在
- go - Go lang 嵌套切片大小分配
- c# - 在当前上下文中不存在
- javascript - getElementById 使用 id 的子字符串:Angular 4
- ios - 使用 iOS 版本 11.3.1 创建 iPad 模拟器
- r - 纠正R中模数误差的最佳方法?