public IDataObject CopyDataObject(IDataObject dataObject) { if (_managedProxies.ContainsKey(dataObject.Identity)) { // Already tracked return(_managedProxies[dataObject.Identity]); } IDataObject ret = GetDataObject(dataObject.Identity); // Do a full refresh of the data object propertyies foreach (var propertyType in dataObject.GetPropertyTypes()) { _deletePatterns.Add(new Triple { Subject = dataObject.Identity, Predicate = propertyType.Identity, Object = Constants.WildcardUri, Graph = _updateGraphUri }); foreach (var propertyValue in dataObject.GetPropertyValues(propertyType)) { ret.AddProperty(propertyType, propertyValue); } } return(ret); }
private bool TrySetMember(string propertyName, object value) { if (value is BrightstarDynamicObject) { var val = value as BrightstarDynamicObject; _dataObject.SetProperty(GetPredicateUri(propertyName), val.DataObject); } else if (value is IEnumerable <object> ) { var predicate = GetPredicateUri(propertyName); _dataObject.RemovePropertiesOfType(predicate); var val = value as IEnumerable <object>; foreach (var o in val) { if (o is BrightstarDynamicObject) { var brightstarDynamicObject = o as BrightstarDynamicObject; _dataObject.AddProperty(predicate, brightstarDynamicObject.DataObject); } else { // assume it is a literal _dataObject.AddProperty(predicate, o); } } } else { var predicate = GetPredicateUri(propertyName); if (value is BrightstarDynamicObject) { _dataObject.SetProperty(predicate, (value as BrightstarDynamicObject).DataObject); } else { _dataObject.SetProperty(predicate, value); } } return(true); }