【发布时间】:2017-12-02 02:04:41
【问题描述】:
如标题所述;我有(如下所示)一个结构类型的数组。 但是尝试从中提取数据是行不通的,因为它被评估为 Object 类型。 如果不可能的话,如果可能的话,我真的很喜欢这种态射。
private Entity makeEntity(params KeyValuePair<String, object>[] fields)
{
Entity entity = new Entity();
IEnumerator cons = fields.GetEnumerator();
Field field;
Value value;
while (cons.MoveNext()){
value = new Value();
value.value = cons.Current.Value;
field = new Field();
field.name = cons.Current.Key;
field.values.Add(value);
entity.fields.Add(field);
}
return entity;
}
【问题讨论】:
-
我相信如果有问题,它与.NET('object'类型)有关。
-
在将
cons.Current.Value分配给value.value之前,您是否尝试过将其转换为您需要的任何类型?否则我不确定我是否破坏了你的要求:) -
说明你想做什么。标题没有帮助。
params具有此处未使用的特定语法。您明确表示您希望接收object值。你一开始想做什么?您是否尝试在不使用dynamic的情况下传递dynamic类型? -
另外,我猜你可以简单地使用
foreach KeyValuePair<string, object> keyValuePair in fields)而不必如此明确地使用枚举器。 -
更简单:
return new Entity {Values=fields.Select(pair=>pair.Value).ToArray(); Fields=fields.Select(pair=>pair.Key).ToArray();};。不是说我明白这一点,除非 Entity 实现 DynamicObject ?那为什么不使用字典呢?
标签: c# structure enumerable