2

この小さなクラスを Python から C# に変換するのに少し問題があります。

これまでのところ、私はこれを持っています:

public class objDict
{
    public objDict(Dictionary<object, object> obj)
    {
        foreach(KeyValuePair<object, object> kvp in obj)
        {

        }
    }
}

残りについては、何をすべきかわかりません..Pythonについて少しだけ知っています。
クラスは次のとおりです。

class objDict(object):

    def __init__(self, obj):
        for k, v in obj.iteritems():
            if isinstance(v, dict):
                setattr(self, _to_str(k).title(), objDict(v))
            else:
                setattr(self, k, v)

    def __getitem__(self, val):
        return self.__dict__[val]

    def __repr__(self):
        return '{%s}' % str(', '.join('%s : %s' % (k, repr(v)) for (k, v) in self.__dict__.iteritems()))

前もって感謝します!

4

2 に答える 2

2

次のようになります。

class objDict : Dictionary<object, object>
{
    // __init__
    public objDict(IDictionary obj = null)
    {
        if (obj == null)
        {
            return;
        }

        foreach (DictionaryEntry kv in obj)
        {
            if (kv.Value is IDictionary)
            {
                // Not sure if it should be CultureInfo.InvariantCulture or CultureInfo.CurrentCulture
                this.Add(CultureInfo.InvariantCulture.TextInfo.ToTitleCase(kv.Key.ToString()), new objDict((IDictionary)kv.Value));
            }
            else
            {
                this.Add(kv.Key, kv.Value);
            }
        }
    }

    // __getitem__
    public object this[object key]
    {
        get
        {
            return this[key];
        }
    }

    // __repr__
    public string ToString()
    {
        return string.Join(", ", this.Select(p => string.Format("{0} : {0}", p.Key, p.Value)));
    }
}

Dictionary<object, object>内部辞書が浅く複製され、便利な.ToString().

于 2013-08-30T13:11:36.723 に答える