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;
 }
Example #2
0
        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);
        }
Example #3
0
        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));
        }
Example #4
0
        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;
        }
Example #6
0
        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;
 }
Example #8
0
 protected override void SetUp()
 {
     base.SetUp();
     dummyContext = A.Fake <IReplicationContext>(x => x.Strict());
 }
Example #9
0
 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());
 }