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); }