這個是比較考驗C#技術的問題,我寫了壹個非常簡單的實現示例,但BsonDocument的實現明顯復雜很多,由於是閉源的,也許可以從反編譯看到其具體實現:
class?Program{
static?void?Main(string[]?args)
{
MyClass?myClass?=?new?MyClass
{
{?"a","11"?},
{?"b","22"?}
};
foreach?(var?kv?in?myClass)
{
Console.WriteLine("{0}={1}\n",?kv.Key,?kv.Value);
}
Console.ReadKey();
}
}
public?class?MyClass?:?IEnumerable<KeyValuePair<string,?string>>
{
public?Dictionary<string,?string>?mydata;
public?MyClass()
{
this.mydata?=?new?Dictionary<string,?string>();
}
public?string?this[string?k]
{
get?{?return?mydata[k];?}
set?{?mydata[k]?=?value;?}
}
public?IEnumerator<KeyValuePair<string,?string>>?GetEnumerator()
{
return?this.mydata.GetEnumerator();
}
IEnumerator?IEnumerable.GetEnumerator()
{
return?this.mydata.GetEnumerator();
}
public?void?Add(string?k,?string?v)
{
this.mydata.Add(k,?v);
}
}