动态字典c# - 使用int作为键创建

时间:2017-07-05 10:52:21

标签: c# dictionary dynamic

我是在c#中创建动态词典的新手。在线的大多数例子都是使用Dictionary <string,object>。 在我想要将.csv文件解析为动态字典,并以行号作为键之后,如何创建一个整数作为键(Dictionary <int, object>)?

这是我的代码:

public class DynamicDictionary<TValue> : DynamicObject, IEnumerable
{
    private Dictionary<int, TValue> _dictionary;
    public DynamicDictionary()
    {
        _dictionary = new Dictionary<int, TValue>();        
    }

    public override bool TryGetMember(GetMemberBinder binder, out object result)
    {
        TValue data;
        int rowNum = Convert.ToInt32(binder.Name);
        if (!_dictionary.TryGetValue(rowNum, out data))
        {
            throw new KeyNotFoundException("There is no key by that row number");
        }

        result = data;
        return true;
    }

    public override bool TrySetMember(SetMemberBinder binder, object value)
    {
        int rowNum = Convert.ToInt32(binder.Name);
        if (_dictionary.ContainsKey(rowNum))
        {
            _dictionary[rowNum] = (TValue)value;
        }
        else
        {
            _dictionary.Add(rowNum, (TValue)value);
        }
        return true;
    }


    public IEnumerator GetEnumerator()
    {
        return _dictionary.GetEnumerator();
    }
}

如何设置和获取此词典中的值?

因为这段代码错了: myDict.1,myDict.2等。

我做错了什么?

0 个答案:

没有答案