/// <inheritdoc/> public override bool TrySetPropertyValue(string name, object value) { if (name == null) { throw Error.ArgumentNull("name"); } if (_dynamicDictionaryPropertyinfo != null) { // Dynamic property can have the same name as the dynamic property dictionary. if (name == _dynamicDictionaryPropertyinfo.Name || !_allProperties.ContainsKey(name)) { if (_dynamicDictionaryCache == null) { _dynamicDictionaryCache = GetDynamicPropertyDictionary(_dynamicDictionaryPropertyinfo, _instance, create: true); } _dynamicDictionaryCache[name] = value; _changedDynamicProperties.Add(name); return(true); } } if (!_updatableProperties.Contains(name)) { return(false); } PropertyAccessor <TStructuralType> cacheHit = _allProperties[name]; if (value == null && !EdmLibHelpers.IsNullable(cacheHit.Property.PropertyType)) { return(false); } Type propertyType = cacheHit.Property.PropertyType; if (value != null && !TypeHelper.IsCollection(propertyType) && !propertyType.IsAssignableFrom(value.GetType())) { return(false); } cacheHit.SetValue(_instance, value); _changedProperties.Add(name); return(true); }