2013-08-30 57 views
0

我在將這個小類從Python轉換爲C#時遇到了一些麻煩,任何人都可以幫助我嗎?從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())) 

提前致謝!

+3

到目前爲止你有什麼?另外,爲什麼不使用http://msdn.microsoft.com/en-us/library/xfhwa508.aspx? –

+4

你爲什麼需要這樣做?你想解決什麼問題? –

+1

該班打算做什麼? –

回答

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()