using System.Collections.Generic;
class DynamicDictionaryWrapper : DynamicObject
protected readonly Dictionary<string,object> _source;
public DynamicDictionaryWrapper(Dictionary<string,object> source)
public override bool TryGetMember(GetMemberBinder binder, out object result)
return (_source.TryGetValue(binder.Name, out result));
public static void Main()
var myDictionary = new Dictionary<string, dynamic> {
dynamic myObject = new DynamicDictionaryWrapper(myDictionary);
Console.WriteLine(myObject.ID1);
Console.WriteLine(myObject.ID2);
Console.WriteLine(myObject.ID3);