我尝试使用基于0的索引迭代NameValueMap但它不起作用。使用基于1的索引迭代它。
没用。
rel_class
的工作。
rel_class: [:OwnsAccount, :ManagesAccount]
我很惊讶。这是预期的吗?
我还注意到public static void onParameterChange(_Document document,
Inventor.Parameter parameter,
EventTimingEnum BeforeOrAfter,
NameValueMap context ,
out HandlingCodeEnum handlingCode)
{
handlingCode = HandlingCodeEnum.kEventHandled;
// Did not work. Got an exception.
for ( int i = 0; i < context.Count; ++i )
{
string name = context.Name[i];
string value = (string)context.Value[name];
}
}
继承了public static void onParameterChange(_Document document,
Inventor.Parameter parameter,
EventTimingEnum BeforeOrAfter,
NameValueMap context ,
out HandlingCodeEnum handlingCode)
{
handlingCode = HandlingCodeEnum.kEventHandled;
// Worked.
for ( int i = 1; i <= context.Count; ++i )
{
string name = context.Name[i];
string value = (string)context.Value[name];
}
}
。我尝试使用NameValueMap
获取IEnumerable
的项目。但是,这只给了我项目的价值。有没有办法获得物品的名称?
foreach
答案 0 :(得分:0)
互联网上关于此NameValueMap
的信息很少,因此很难判断是否存在可利用的现有方法。
但是,您始终可以创建一个扩展方法来满足您的需求:
public static class NameValueMapExtensions
{
public static IEnumerable<KeyValuePair<string, T>> AsEnumerable<T>(this NameValueMap map)
{
for (int i = 1; i <= map.Count; i++)
yield return new KeyValuePair<string, T>(
map.Name[i], (T)map.Values[i]);
}
}
// ...
foreach (var item in context.AsEnumerable())
{
// item.Key: Name
// item.Value: ...
}
答案 1 :(得分:0)
因为 NameValueMaps 不包含很多元素,你也可以只返回一个完整的 Dictionary,而不是产生 KeyValuePair 元素。这使您可以访问一些方便的方法,例如 .TryGetValue()
。
public static class NameValueMapExtensions
{
public static IDictionary<string, object> ToDictionary(this NameValueMap nameValueMap)
{
var dictionary = new Dictionary<string, object>();
for (var i = 1; i <= nameValueMap.Count; i++)
dictionary.Add(nameValueMap.Name[i], nameValueMap.Value[nameValueMap.Name[i]]);
return dictionary;
}
}