public object Replicate(object source, IReplicationContext context) { Guard.AgainstViolation(source.GetType().GetElementType() == elementType, "This replicator can copy only arrays of elements of type {0}, but {1} received", elementType, source.GetType().GetElementType()); var resultingArray = source.As<Array>().Clone().As<Array>(); for (int i = resultingArray.Length - 1; i >= 0; i--) { object sourceElement = getElement(resultingArray, i); object resultingElement = context.Replicate(sourceElement); setElement(resultingArray, i, resultingElement); } return resultingArray; }
public object Replicate(object source, IReplicationContext context) { Guard.AgainstViolation(source.GetType().GetElementType() == elementType, "This replicator can copy only arrays of elements of type {0}, but {1} received", elementType, source.GetType().GetElementType()); var resultingArray = source.As <Array>().Clone().As <Array>(); for (int i = resultingArray.Length - 1; i >= 0; i--) { object sourceElement = getElement(resultingArray, i); object resultingElement = context.Replicate(sourceElement); setElement(resultingArray, i, resultingElement); } return(resultingArray); }
public void SourceHasFieldMarkedForReplication_SourceIsReplicated_FieldWasReplicated() { var sourceField = new Class(); var resultField = new Class(); IMetadataProvider metadataProvider = MetadataProviderFor <ClassWithField>(x => x.field, ReplicationBehavior.DeepCopy); CommonReplicationStrategy replicator = ReplicatorFor <ClassWithField>(metadataProvider); IReplicationContext context = ReplicationContextThat(onReceiving: sourceField, returns: resultField); var source = new ClassWithField { field = sourceField }; var result = replicator.Replicate(source, context).As <ClassWithField>(); Assert.That(result.field, Is.SameAs(resultField)); }
public void SourceIsValueType_SourceIsReplicated_FieldWasReplicated() { DateTime sourceField = DateTime.Today; DateTime resultField = DateTime.Today.AddDays(1); IMetadataProvider metadataProvider = MetadataProviderFor <Struct>(x => x.field, ReplicationBehavior.DeepCopy); CommonReplicationStrategy replicator = ReplicatorFor <Struct>(metadataProvider); IReplicationContext context = ReplicationContextThat(onReceiving: sourceField, returns: resultField); var source = new Struct { field = sourceField }; var result = replicator.Replicate(source, context).As <Struct>(); Assert.That(result.field, Is.EqualTo(resultField)); }
public object Replicate(object source, IReplicationContext context) { Guard.AgainstViolation(source.GetType() == entityType, "This replicator can copy only entities of type {0}, but {1} received", entityType, source.GetType()); object result = FormatterServices.GetUninitializedObject(entityType); foreach (var memberReplicationInfo in memberDescriptions) { object memberValue = memberReplicationInfo.GetMember(source); object replicatedValue = memberReplicationInfo.Behavior == ReplicationBehavior.DeepCopy ? context.Replicate(memberValue) : memberValue; result = memberReplicationInfo.SetMember(result, replicatedValue); } return result; }
public object Replicate(object source, IReplicationContext context) { Guard.AgainstViolation(source.GetType() == entityType, "This replicator can copy only entities of type {0}, but {1} received", entityType, source.GetType()); object result = FormatterServices.GetUninitializedObject(entityType); foreach (var memberReplicationInfo in memberDescriptions) { object memberValue = memberReplicationInfo.GetMember(source); object replicatedValue = memberReplicationInfo.Behavior == ReplicationBehavior.DeepCopy ? context.Replicate(memberValue) : memberValue; result = memberReplicationInfo.SetMember(result, replicatedValue); } return(result); }
public object Replicate(object source, IReplicationContext context) { return null; }
protected override void SetUp() { base.SetUp(); dummyContext = A.Fake <IReplicationContext>(x => x.Strict()); }
public object Replicate(object source, IReplicationContext context) { return(null); }
protected override void SetUp() { base.SetUp(); replicator = new CloneArrayReplicationStrategy(typeof(Class)); dummyContext = A.Fake <IReplicationContext>(x => x.Strict()); }
public object Replicate(object source, IReplicationContext context) { return(source.As <Array>().Clone()); }