public void setValue(int column, Object value) { switch (column) { case 0: name = (String)value; break; case 1: propertyInfo.setValue(instance, value, null); break; } }
/// <summary> /// Copy the values from source into destination. /// </summary> /// <param name="source">The source collection.</param> /// <param name="destination">The destination collection.</param> /// <param name="info">The member wrapper to set the info.</param> internal override void copyValue(object source, object destination, MemberWrapper info, CopyFilter filter) { ICollection <T> sourceCollection = (ICollection <T>)info.getValue(source, null); ICollection <T> destinationCollection = (ICollection <T>)System.Activator.CreateInstance(sourceCollection.GetType()); MemberCopier copier = MemberCopier.getCopyClass(sourceCollection.GetType().GetGenericArguments()[0]); foreach (T item in sourceCollection) { Object newObj = copier.createCopy(item, filter); destinationCollection.Add((T)newObj); } info.setValue(destination, destinationCollection, null); }
/// <summary> /// Copy source into destination. /// </summary> /// <param name="source">The source dictionary.</param> /// <param name="destination">The destination dictionary.</param> /// <param name="info">The member wrapper to set data.</param> internal override void copyValue(object source, object destination, MemberWrapper info, CopyFilter filter) { IDictionary <Key, Value> sourceDictionary = (IDictionary <Key, Value>)info.getValue(source, null); if (sourceDictionary != null) { Type dictionaryType = sourceDictionary.GetType(); IDictionary <Key, Value> destDictionary = (IDictionary <Key, Value>)System.Activator.CreateInstance(dictionaryType); Type[] keyValueTypes = dictionaryType.GetGenericArguments(); MemberCopier keyCopier = MemberCopier.getCopyClass(keyValueTypes[0]); MemberCopier valueCopier = MemberCopier.getCopyClass(keyValueTypes[1]); foreach (Key key in sourceDictionary.Keys) { Key copiedKey = (Key)keyCopier.createCopy(key, filter); Value copiedValue = (Value)valueCopier.createCopy(sourceDictionary[key], filter); destDictionary.Add(copiedKey, copiedValue); } info.setValue(destination, destDictionary, null); } }
/// <summary> /// Helper function, actually does the copy. /// </summary> /// <param name="destination"></param> /// <param name="info"></param> /// <param name="deepCopySource"></param> /// <param name="deepCopyDestination"></param> internal void performCopy(object destination, MemberWrapper info, Object deepCopySource, Object deepCopyDestination, CopyFilter filter) { Type type = deepCopySource.GetType(); //Make sure the destination exists, if it does not create it if (deepCopyDestination == null) { deepCopyDestination = System.Activator.CreateInstance(type); info.setValue(destination, deepCopyDestination, null); } //Scan and copy all properties. IEnumerable <MemberWrapper> members = CopyMemberScanner.Scanner.getMatchingMembers(type); foreach (MemberWrapper member in members) { if (filter == null || filter.allowCopy(member)) { MemberCopier copier = MemberCopier.getCopyClass(member.getWrappedType()); copier.copyValue(deepCopySource, deepCopyDestination, member, filter); } } }
/// <summary> /// Set the value as an object. /// </summary> /// <param name="value">An object with the value, must be of the correct type.</param> public void setValue(object value) { propertyInfo.setValue(instance, value, null); }
/// <summary> /// Copy source to destination. /// </summary> /// <param name="source">The source object.</param> /// <param name="destination">The destination object.</param> /// <param name="info">The info to use to set the value.</param> internal override void copyValue(object source, object destination, MemberWrapper info, CopyFilter filter) { info.setValue(destination, info.getValue(source, null), null); }