public void DynamicCastShouldReturnSameObjectOnSubsequentCalls()
        {
            dynamic target = new DynamicRecord();
            target.Name = "Bob";
            target.Age = 42;

            User user1 = target;
            User user2 = target;
            Assert.AreSame(user1, user2);
        }
        public void DynamicCastTest()
        {
            dynamic target = new DynamicRecord();
            target.Name = "Bob";
            target.Age = 42;

            User user = target;
            Assert.AreEqual("Bob", user.Name);
            Assert.AreEqual(42, user.Age);
        }
 public void DynamicRecordDictionaryConstructorTest()
 {
     IDictionary<string, object> data = new Dictionary<string, object>
                                            {
                                                { "Name", "Bob" },
                                                { "Age", 42 }
                                            };
     dynamic target = new DynamicRecord(data);
     Assert.AreEqual("Bob", target.Name);
     Assert.AreEqual(42, target.Age);
 }
 public override bool TryGetMember(GetMemberBinder binder, out object result)
 {
     if (_data.ContainsKey(binder.Name))
     {
         result = _data[binder.Name];
         return true;
     }
     var relatedAdapter = _database.Adapter as IAdapterWithRelation;
     if (relatedAdapter != null && relatedAdapter.IsValidRelation(_tableName, binder.Name))
     {
         var relatedRows = relatedAdapter.FindRelated(_tableName, _data, binder.Name);
         if (relatedRows.Count() == 1 && !binder.Name.IsPlural())
         {
             result = new DynamicRecord(relatedRows.Single(), binder.Name, _database);
         }
         else
         {
             result = relatedRows.Select(dict => new DynamicRecord(dict, binder.Name, _database));
         }
         return true;
     }
     return base.TryGetMember(binder, out result);
 }
 public void DynamicRecordSetterTest()
 {
     dynamic target = new DynamicRecord();
     target.Name = "Bob";
     Assert.AreEqual("Bob", target.Name);
 }