我将简要介绍一下我熟悉使用C的实现方法.我认为重点在于如何使用数据,而不是像在这样的例子中所做的那样:
typedef struct { const char *description; uint32_t colour_id; uint32_t quantity; } my_data_t; const my_data_t ref_data[] = { {"Brown Bear",0x88,10},{"Blue Horse",0x666,42},{"Purple Cat",123456,50},}; void show_animals( void ) { my_data_t *ptr; ptr = &ref_data[2]; console_write("Animal: %s,Colour: 0x%8X,Num: %d",ptr->description,ptr->colour_id,ptr->quantity); }
所以我正在寻找关于如何在C#中实现类似的数据表或参考数据的建议.我得到了较高级别的东西,但是我还没有处理任何表驱动的数据方法.
作为一个例子,我在C#中尝试做的是组合框允许从描述字段中进行选择,而颜色ID和数量可能用于更新只读框.
这是一个非常简单的例子,但如果我可以确定一个很好的方法来实现这一点,我可以把它推断到我正在做的事情.
解决方法
我会使用一个不变类的
ReadOnlyCollection<T>
.
public class MyData { public MyData(string description,int colorId,int quantity) { Description = description; ColorId = colorId; Quantity = quantity; } public string Description {get; private set; } public int ColorId {get; private set; } public int Quantity {get; private set; } } ... public static readonly ReadOnlyCollection<MyData> refData = new ReadOnlyCollection<MyData>( new [] { new MyData("Brown Bear",10),new MyData("Blue Horse",42),new MyData("Purple Cat",50) });