/// <summary>
        /// Gets the property value.
        /// </summary>
        /// <param name="instance">The instance.</param>
        /// <param name="mongoName">Name of the mongo.</param>
        /// <returns></returns>
        public object GetPropertyValue(object instance, string mongoName)
        {
            //not sure if this is necessary...
            //if (_classMap.HasDiscriminator && _classMap.DiscriminatorAlias == mongoName)
            //    return _classMap.Discriminator;

            if (!_classMap.HasId && mongoName == "_id")
            {
                return(null);
            }

            return(_classMap.GetMemberMapFromAlias(mongoName).GetValue(instance));
        }
Example #2
0
        public void AddProperty(string name, object value)
        {
            var memberMap = _classMap.GetMemberMapFromAlias(name);

            if (memberMap != null)
            {
                memberMap.SetValue(_instance, value);
            }
            else if ((!_classMap.HasDiscriminator || _classMap.DiscriminatorAlias != name) && _extendedProperties != null)
            {
                _extendedProperties.Add(name, value);
            }
        }
        public PropertyDescriptor GetPropertyDescriptor(string name)
        {
            var memberMap = _classMap.GetMemberMapFromAlias(name);

            if (memberMap == null)
            {
                return(null);
            }

            var  type         = memberMap.MemberReturnType;
            bool isDictionary = false;

            if (memberMap is CollectionMemberMap)
            {
                type = ((CollectionMemberMap)memberMap).ElementType;
            }
            else if (memberMap is DictionaryMemberMap)
            {
                type         = ((DictionaryMemberMap)memberMap).ValueType;
                isDictionary = true;
            }

            return(new PropertyDescriptor {
                Type = type, IsDictionary = isDictionary
            });
        }