예제 #1
0
        public void Apply(object objectToApplyTo, IObjectAdapter adapter)
        {
            if (objectToApplyTo == null)
            {
                throw new ArgumentNullException(nameof(objectToApplyTo));
            }

            if (adapter == null)
            {
                throw new ArgumentNullException(nameof(adapter));
            }

            switch (OperationType)
            {
                case OperationType.Add:
                    adapter.Add(this, objectToApplyTo);
                    break;
                case OperationType.Remove:
                    adapter.Remove(this, objectToApplyTo);
                    break;
                case OperationType.Replace:
                    adapter.Replace(this, objectToApplyTo);
                    break;
                case OperationType.Move:
                    adapter.Move(this, objectToApplyTo);
                    break;
                case OperationType.Copy:
                    adapter.Copy(this, objectToApplyTo);
                    break;
                case OperationType.Test:
                    throw new NotSupportedException(Resources.TestOperationNotSupported);
                default:
                    break;
            }
        }
예제 #2
0
        internal void Apply(T objectToApplyTo, IObjectAdapter <T> adapter)
        {
            switch (OperationType)
            {
            case OperationType.Add:
                adapter.Add(this, objectToApplyTo);
                break;

            case OperationType.Remove:
                adapter.Remove(this, objectToApplyTo);
                break;

            case OperationType.Replace:
                adapter.Replace(this, objectToApplyTo);
                break;

            case OperationType.Move:
                adapter.Move(this, objectToApplyTo);
                break;

            case OperationType.Copy:
                adapter.Copy(this, objectToApplyTo);
                break;

            case OperationType.Test:
                throw new NotImplementedException("Test is currently not implemented.");

            default:
                break;
            }
        }
예제 #3
0
        /// <summary>
        /// Apply this JsonPatchDocument
        /// </summary>
        /// <param name="objectToApplyTo">Object to apply the JsonPatchDocument to</param>
        /// <param name="adapter">IObjectAdapter instance to use when applying</param>
        /// <param name="logErrorAction">Action to log errors</param>
        public void ApplyTo(TModel objectToApplyTo, IObjectAdapter adapter, Action <JsonPatchError> logErrorAction)
        {
            if (objectToApplyTo == null)
            {
                throw new ArgumentNullException(nameof(objectToApplyTo));
            }

            if (adapter == null)
            {
                throw new ArgumentNullException(nameof(adapter));
            }

            foreach (var op in Operations)
            {
                try
                {
                    op.Apply(objectToApplyTo, adapter);
                }
                catch (JsonPatchException jsonPatchException)
                {
                    var errorReporter = logErrorAction ?? ErrorReporter.Default;
                    errorReporter(new JsonPatchError(objectToApplyTo, op, jsonPatchException.Message));

                    // As per JSON Patch spec if an operation results in error, further operations should not be executed.
                    break;
                }
            }
        }
예제 #4
0
        public IEnumerable <PatchOperationResult> Apply(TModel objectToApplyTo, IObjectAdapter adapter)
        {
            if (objectToApplyTo == null)
            {
                throw new ArgumentNullException("objectToApplyTo");
            }

            if (adapter == null)
            {
                throw new ArgumentNullException("adapter");
            }

            switch (OperationType)
            {
            case OperationType.Add:
                return(adapter.Add(this, objectToApplyTo));

            case OperationType.Remove:
                return(adapter.Remove(this, objectToApplyTo));

            case OperationType.Replace:
                return(adapter.Replace(this, objectToApplyTo));

            default:
                throw new InvalidOperationException(string.Format("Patch OperationType type '{0}' is invalid.", OperationType));
            }
        }
예제 #5
0
        public void Apply(object objectToApplyTo, IObjectAdapter adapter)
        {
            if (objectToApplyTo == null)
            {
                throw new ArgumentNullException("objectToApplyTo");
            }

            if (adapter == null)
            {
                throw new ArgumentNullException("adapter");
            }

            switch (OperationType)
            {
            case OperationType.Add:
                adapter.Add(this, objectToApplyTo);
                break;

            case OperationType.Remove:
                adapter.Remove(this, objectToApplyTo);
                break;

            case OperationType.Replace:
                adapter.Replace(this, objectToApplyTo);
                break;
            }
        }
예제 #6
0
 public bool TryGetObject(string objectId, out IObjectAdapter objectAdapter)
 {
     lock (_objects)
     {
         return(_objects.TryGetValue(objectId, out objectAdapter));
     }
 }
예제 #7
0
        public void Apply(TModel objectToApplyTo, IObjectAdapter <TModel> adapter)
        {
            switch (OperationType)
            {
            case OperationType.Add:
                adapter.Add(this, objectToApplyTo);
                break;

            case OperationType.Remove:
                adapter.Remove(this, objectToApplyTo);
                break;

            case OperationType.Replace:
                adapter.Replace(this, objectToApplyTo);
                break;

            case OperationType.Move:
                adapter.Move(this, objectToApplyTo);
                break;

            case OperationType.Copy:
                adapter.Copy(this, objectToApplyTo);
                break;

            case OperationType.Test:
                throw new NotSupportedException(Resources.TestOperationNotSupported);

            default:
                break;
            }
        }
예제 #8
0
        /// <summary>
        /// Applies JSON patch operations on object and logs errors in <see cref="T:Microsoft.AspNetCore.Mvc.ModelBinding.ModelStateDictionary" />.
        /// </summary>
        /// <param name="patchDoc">The <see cref="T:Microsoft.AspNetCore.JsonPatch.JsonPatchDocument`1" />.</param>
        /// <param name="objectToApplyTo">The entity on which <see cref="T:Microsoft.AspNetCore.JsonPatch.JsonPatchDocument`1" /> is applied.</param>
        /// <param name="objectAdapter">Object Adapter to use</param>
        /// <param name="modelState">The <see cref="T:Microsoft.AspNetCore.Mvc.ModelBinding.ModelStateDictionary" /> to add errors.</param>
        /// <param name="prefix">The prefix to use when looking up values in <see cref="T:Microsoft.AspNetCore.Mvc.ModelBinding.ModelStateDictionary" />.</param>
        public static void ApplyTo <T>(
            this JsonPatchDocument <T> patchDoc,
            T objectToApplyTo,
            IObjectAdapter objectAdapter,
            ModelStateDictionary modelState,
            string prefix) where T : class
        {
            if (patchDoc == null)
            {
                throw new ArgumentNullException(nameof(patchDoc));
            }

            if (objectToApplyTo == null)
            {
                throw new ArgumentNullException(nameof(objectToApplyTo));
            }

            if (modelState == null)
            {
                throw new ArgumentNullException(nameof(modelState));
            }

            patchDoc.ApplyTo(objectToApplyTo, objectAdapter, jsonPatchError =>
            {
                var affectedObjectName = jsonPatchError.AffectedObject.GetType().Name;
                var key = string.IsNullOrEmpty(prefix) ? affectedObjectName : prefix + "." + affectedObjectName;

                modelState.TryAddModelError(key, jsonPatchError.ErrorMessage);
            });
        }
예제 #9
0
        public void Apply(T objectToApplyTo, IObjectAdapter <T> adapter)
        {
            switch (OperationType)
            {
            case OperationType.Add:
                adapter.Add(this, objectToApplyTo);
                break;

            case OperationType.Remove:
                adapter.Remove(this, objectToApplyTo);
                break;

            case OperationType.Replace:
                adapter.Replace(this, objectToApplyTo);
                break;

            case OperationType.Move:
                adapter.Move(this, objectToApplyTo);
                break;

            case OperationType.Copy:
                adapter.Copy(this, objectToApplyTo);
                break;

            case OperationType.Test:
                adapter.Test(this, objectToApplyTo);
                break;

            default:
                break;
            }
        }
예제 #10
0
        public void Apply(object objectToApplyTo, IObjectAdapter adapter)
        {
            if (objectToApplyTo == null)
            {
                throw new ArgumentNullException("objectToApplyTo");
            }

            if (adapter == null)
            {
                throw new ArgumentNullException("adapter");
            }

            switch (OperationType)
            {
                case OperationType.Add:
                    adapter.Add(this, objectToApplyTo);
                    break;
                case OperationType.Remove:
                    adapter.Remove(this, objectToApplyTo);
                    break;
                case OperationType.Replace:
                    adapter.Replace(this, objectToApplyTo);
                    break;
            }
        }
예제 #11
0
 /// <summary>
 /// Apply this JsonPatchDocument
 /// </summary>
 /// <param name="objectToApplyTo">Object to apply the JsonPatchDocument to</param>
 /// <param name="adapter">IObjectAdapter instance to use when applying</param>
 public void ApplyTo([NotNull] TModel objectToApplyTo, [NotNull] IObjectAdapter adapter)
 {
     // apply each operation in order
     foreach (var op in Operations)
     {
         op.Apply(objectToApplyTo, adapter);
     }
 }
예제 #12
0
 /// <summary>
 /// Apply the patch document, passing in a custom IObjectAdapter<typeparamref name=">"/>.
 /// This method will change the passed-in object.
 /// </summary>
 /// <param name="objectToApplyTo">The object to apply the JsonPatchDocument to</param>
 /// <param name="adapter">The IObjectAdapter instance to use</param>
 public void ApplyTo(T objectToApplyTo, IObjectAdapter <T> adapter)
 {
     // apply each operation in order
     foreach (var op in Operations)
     {
         op.Apply(objectToApplyTo, adapter);
     }
 }
예제 #13
0
        /// <summary>
        /// Initializes a new instance of the <see cref="XmlSerializer" /> class.
        /// </summary>
        /// <param name="serializationManager">The serialization manager.</param>
        /// <param name="dataContractSerializerFactory">The data contract serializer factory.</param>
        /// <param name="xmlNamespaceManager">The XML namespace manager.</param>
        /// <param name="typeFactory">The type factory.</param>
        /// <param name="objectAdapter">The object adapter.</param>
        /// <exception cref="ArgumentNullException">The <paramref name="serializationManager" /> is <c>null</c>.</exception>
        /// <exception cref="ArgumentNullException">The <paramref name="dataContractSerializerFactory" /> is <c>null</c>.</exception>
        /// <exception cref="ArgumentNullException">The <paramref name="xmlNamespaceManager" /> is <c>null</c>.</exception>
        public XmlSerializer(ISerializationManager serializationManager, IDataContractSerializerFactory dataContractSerializerFactory,
            IXmlNamespaceManager xmlNamespaceManager, ITypeFactory typeFactory, IObjectAdapter objectAdapter)
            : base(serializationManager, typeFactory, objectAdapter)
        {
            Argument.IsNotNull("dataContractSerializerFactory", dataContractSerializerFactory);
            Argument.IsNotNull("xmlNamespaceManager", xmlNamespaceManager);

            _dataContractSerializerFactory = dataContractSerializerFactory;
            _xmlNamespaceManager = xmlNamespaceManager;
        }
예제 #14
0
        public void Apply(TModel objectToApplyTo, IObjectAdapter adapter)
        {
            if (objectToApplyTo == null)
            {
                throw new ArgumentNullException(nameof(objectToApplyTo));
            }

            if (adapter == null)
            {
                throw new ArgumentNullException(nameof(adapter));
            }

            switch (OperationType)
            {
            case OperationType.Add:
                adapter.Add(this, objectToApplyTo);
                break;

            case OperationType.Remove:
                adapter.Remove(this, objectToApplyTo);
                break;

            case OperationType.Replace:
                adapter.Replace(this, objectToApplyTo);
                break;

            case OperationType.Move:
                adapter.Move(this, objectToApplyTo);
                break;

            case OperationType.Copy:
                adapter.Copy(this, objectToApplyTo);
                break;

            case OperationType.Test:
                if (adapter is IObjectAdapterWithTest adapterWithTest)
                {
                    adapterWithTest.Test(this, objectToApplyTo);
                    break;
                }
                else
                {
                    throw new JsonPatchException(new JsonPatchError(objectToApplyTo, this, Resources.TestOperationNotSupported));
                }

            case OperationType.Invalid:
                throw new JsonPatchException(
                          Resources.FormatInvalidJsonPatchOperation(op), innerException: null);

            default:
                break;
            }
        }
예제 #15
0
        /// <summary>
        /// Initializes a new instance of the <see cref="SerializerBase{TSerializationContext}" /> class.
        /// </summary>
        /// <param name="serializationManager">The serialization manager.</param>
        /// <param name="typeFactory">The type factory.</param>
        /// <param name="objectAdapter">The object adapter.</param>
        /// <exception cref="ArgumentNullException">The <paramref name="serializationManager" /> is <c>null</c>.</exception>
        protected SerializerBase(ISerializationManager serializationManager, ITypeFactory typeFactory, IObjectAdapter objectAdapter)
        {
            Argument.IsNotNull("serializationManager", serializationManager);
            Argument.IsNotNull("typeFactory", typeFactory);
            Argument.IsNotNull("objectAdapter", objectAdapter);

            SerializationManager = serializationManager;
            TypeFactory          = typeFactory;
            ObjectAdapter        = objectAdapter;

            SerializationManager.CacheInvalidated += OnSerializationManagerCacheInvalidated;
        }
예제 #16
0
        public IDisposable Add(string objectId, IObjectAdapter objectAdapter)
        {
            if (_disposed)
            {
                throw new ObjectDisposedException(nameof(ObjectsRepository));
            }

            lock (_objects)
            {
                _objects.Add(objectId, objectAdapter);
            }

            return(new Disposable(() => Remove(objectId)));
        }
예제 #17
0
        public void Apply(object objectToApplyTo, IObjectAdapter adapter)
        {
            if (objectToApplyTo == null)
            {
                throw new ArgumentNullException(nameof(objectToApplyTo));
            }

            if (adapter == null)
            {
                throw new ArgumentNullException(nameof(adapter));
            }

            switch (OperationType)
            {
            case OperationType.Add:
                adapter.Add(this, objectToApplyTo);
                break;

            case OperationType.Remove:
                adapter.Remove(this, objectToApplyTo);
                break;

            case OperationType.Replace:
                adapter.Replace(this, objectToApplyTo);
                break;

            case OperationType.Move:
                adapter.Move(this, objectToApplyTo);
                break;

            case OperationType.Copy:
                adapter.Copy(this, objectToApplyTo);
                break;

            case OperationType.Test:
                if (adapter is IObjectAdapterWithTest adapterWithTest)
                {
                    adapterWithTest.Test(this, objectToApplyTo);
                    break;
                }
                else
                {
                    throw new NotSupportedException(Resources.TestOperationNotSupported);
                }

            default:
                break;
            }
        }
예제 #18
0
        /// <summary>
        ///     Applies the operation to the target object using the specified adapter.
        /// </summary>
        /// <param name="objectToApplyTo">The target object.</param>
        /// <param name="adapter">The <see cref="IObjectAdapter" />.</param>
        public void Apply(TModel objectToApplyTo, IObjectAdapter adapter)
        {
            if (objectToApplyTo == null)
            {
                throw new ArgumentNullException(nameof(objectToApplyTo));
            }

            if (adapter == null)
            {
                throw new ArgumentNullException(nameof(adapter));
            }

            switch (OperationType)
            {
            case OperationType.Add:
                adapter.Add(this, objectToApplyTo, typeof(TModel));
                break;

            case OperationType.Remove:
                adapter.Remove(this, objectToApplyTo, typeof(TModel));
                break;

            case OperationType.Replace:
                adapter.Replace(this, objectToApplyTo, typeof(TModel));
                break;

            case OperationType.Move:
                adapter.Move(this, objectToApplyTo, typeof(TModel));
                break;

            case OperationType.Copy:
                adapter.Copy(this, objectToApplyTo, typeof(TModel));
                break;

            case OperationType.Test when adapter is IObjectAdapterWithTest adapterWithTest:
                adapterWithTest.Test(this, objectToApplyTo, typeof(TModel));
                break;

            case OperationType.Test:
                throw new JsonPatchException(new JsonPatchError(objectToApplyTo, this, "The test operation is not supported."));

            case OperationType.Invalid:
                throw new JsonPatchException($"Invalid JsonPatch operation '{Op}'.");
            }
        }
예제 #19
0
        public void Apply(TModel objectToApplyTo, IObjectAdapter adapter)
        {
            if (objectToApplyTo == null)
            {
                throw new ArgumentNullException(nameof(objectToApplyTo));
            }

            if (adapter == null)
            {
                throw new ArgumentNullException(nameof(adapter));
            }

            switch (OperationType)
            {
            case OperationType.Add:
                adapter.Add(this, objectToApplyTo);
                break;

            case OperationType.Remove:
                adapter.Remove(this, objectToApplyTo);
                break;

            case OperationType.Replace:
                adapter.Replace(this, objectToApplyTo);
                break;

            case OperationType.Move:
                adapter.Move(this, objectToApplyTo);
                break;

            case OperationType.Copy:
                adapter.Copy(this, objectToApplyTo);
                break;

            case OperationType.Test:
                throw new NotImplementedException("Test is currently not implemented.");

            case OperationType.Invalid:
                throw new JsonPatchException(
                          Resources.FormatInvalidJsonPatchOperation(op), innerException: null);

            default:
                break;
            }
        }
예제 #20
0
        /// <summary>
        /// Apply this JsonPatchDocument
        /// </summary>
        /// <param name="objectToApplyTo">Object to apply the JsonPatchDocument to</param>
        /// <param name="adapter">IObjectAdapter instance to use when applying</param>
        public void ApplyTo(object objectToApplyTo, IObjectAdapter adapter)
        {
            if (objectToApplyTo == null)
            {
                throw new ArgumentNullException(nameof(objectToApplyTo));
            }

            if (adapter == null)
            {
                throw new ArgumentNullException(nameof(adapter));
            }

            // apply each operation in order
            foreach (var op in Operations)
            {
                op.Apply(objectToApplyTo, adapter);
            }
        }
예제 #21
0
        public void Apply(object objectToApplyTo, IObjectAdapter adapter)
        {
            if (objectToApplyTo == null)
            {
                throw new ArgumentNullException(nameof(objectToApplyTo));
            }

            if (adapter == null)
            {
                throw new ArgumentNullException(nameof(adapter));
            }

            switch (OperationType)
            {
            case OperationType.Add:
                adapter.Add(this, objectToApplyTo);
                break;

            case OperationType.Remove:
                adapter.Remove(this, objectToApplyTo);
                break;

            case OperationType.Replace:
                adapter.Replace(this, objectToApplyTo);
                break;

            case OperationType.Move:
                adapter.Move(this, objectToApplyTo);
                break;

            case OperationType.Copy:
                adapter.Copy(this, objectToApplyTo);
                break;

            case OperationType.Test:
                adapter.Test(this, objectToApplyTo);
                break;

            default:
                break;
            }
        }
예제 #22
0
        public void Apply(TModel objectToApplyTo, IObjectAdapter adapter)
        {
            if (objectToApplyTo == null)
            {
                throw new ArgumentNullException(nameof(objectToApplyTo));
            }

            if (adapter == null)
            {
                throw new ArgumentNullException(nameof(adapter));
            }

            switch (OperationType)
            {
            case OperationType.Add:
                adapter.Add(this, objectToApplyTo);
                break;

            case OperationType.Remove:
                adapter.Remove(this, objectToApplyTo);
                break;

            case OperationType.Replace:
                adapter.Replace(this, objectToApplyTo);
                break;

            case OperationType.Move:
                adapter.Move(this, objectToApplyTo);
                break;

            case OperationType.Copy:
                adapter.Copy(this, objectToApplyTo);
                break;

            case OperationType.Test:
                throw new JsonPatchException(new JsonPatchError(objectToApplyTo, this, Resources.TestOperationNotSupported));

            default:
                break;
            }
        }
예제 #23
0
        /// <summary>
        /// Apply this JsonPatchDocument
        /// </summary>
        /// <param name="objectToApplyTo">Object to apply the JsonPatchDocument to</param>
        /// <param name="adapter">IObjectAdapter instance to use when applying</param>
        public PatchResult ApplyTo(TModel objectToApplyTo, IObjectAdapter adapter)
        {
            if (objectToApplyTo == null)
            {
                throw new ArgumentNullException("objectToApplyTo");
            }

            if (adapter == null)
            {
                throw new ArgumentNullException("adapter");
            }

            var patchResult = new PatchResult();

            foreach (var op in Operations)
            {
                patchResult.AddRange(op.Apply(objectToApplyTo, adapter));
            }

            return(patchResult);
        }
예제 #24
0
        internal static void Apply(this Operation operation, object objectToApplyTo, IObjectAdapter adapter)
        {
            if (objectToApplyTo == null)
            {
                throw new NullReferenceException("objectToApplyTo cannot be null");
            }
            if (adapter == null)
            {
                throw new NullReferenceException("adapter cannot be null");
            }

            switch (operation.OperationType)
            {
            case OperationType.Add:
                adapter.Add(operation, objectToApplyTo);
                break;

            case OperationType.Remove:
                adapter.Remove(operation, objectToApplyTo);
                break;

            case OperationType.Replace:
                adapter.Replace(operation, objectToApplyTo);
                break;

            case OperationType.Move:
                adapter.Move(operation, objectToApplyTo);
                break;

            case OperationType.Copy:
                adapter.Copy(operation, objectToApplyTo);
                break;

            case OperationType.Test:
                throw new NotImplementedException("Test is currently not implemented.");

            default:
                break;
            }
        }
예제 #25
0
        /// <summary>
        /// Applies JSON patch operations on object and logs errors in <see cref="ModelStateDictionary"/>.
        /// </summary>
        /// <param name="patchDoc">The <see cref="JsonPatchDocument{T}"/>.</param>
        /// <param name="objectToApplyTo">The entity on which <see cref="JsonPatchDocument{T}"/> is applied.</param>
        /// <param name="objectAdapter">Object Adapter to use</param>
        /// <param name="modelState">The <see cref="ModelStateDictionary"/> to add errors.</param>
        public static void ApplyTo <T>(
            this JsonPatchDocument <T> patchDoc,
            T objectToApplyTo,
            IObjectAdapter objectAdapter,
            ModelStateDictionary modelState) where T : class
        {
            if (patchDoc == null)
            {
                throw new ArgumentNullException(nameof(patchDoc));
            }

            if (objectToApplyTo == null)
            {
                throw new ArgumentNullException(nameof(objectToApplyTo));
            }

            if (modelState == null)
            {
                throw new ArgumentNullException(nameof(modelState));
            }

            patchDoc.ApplyTo(objectToApplyTo, objectAdapter, modelState, string.Empty);
        }
예제 #26
0
        /// <summary>
        /// Initializes a new instance of the <see cref="ViewToViewModelMappingHelper"/> class.
        /// </summary>
        /// <param name="viewModelContainer">The view model container.</param>
        /// <param name="objectAdapter">The object adapter.</param>
        /// <exception cref="ArgumentNullException">The <paramref name="viewModelContainer"/> is <c>null</c>.</exception>
        public ViewToViewModelMappingHelper(IViewModelContainer viewModelContainer, IObjectAdapter objectAdapter)
        {
            Argument.IsNotNull("viewModelContainer", viewModelContainer);
            Argument.IsNotNull("objectAdapter", objectAdapter);

            Log.Debug("Initializing view model container to manage ViewToViewModel mappings");

            ViewModelContainer = viewModelContainer;
            ObjectAdapter      = objectAdapter;

            var viewModelContainerType = ViewModelContainerType;

            if (!_viewToViewModelMappingContainers.ContainsKey(viewModelContainerType))
            {
                _viewToViewModelMappingContainers.Add(viewModelContainerType, new ViewToViewModelMappingContainer(viewModelContainerType));
            }

            ViewModelContainer.ViewModelChanged += OnViewModelChanged;
            ViewModelContainer.PropertyChanged  += OnViewModelContainerPropertyChanged;

            InitializeViewModel(ViewModelContainer.ViewModel);

            Log.Debug("Initialized view model container to manage ViewToViewModel mappings");
        }
예제 #27
0
 /// <summary>
 /// Initializes a new instance of the <see cref="JsonSerializer" /> class.
 /// </summary>
 /// <param name="serializationManager">The serialization manager.</param>
 /// <param name="typeFactory">The type factory.</param>
 /// <param name="objectAdapter">The object adapter.</param>
 /// <exception cref="ArgumentNullException">The <paramref name="serializationManager" /> is <c>null</c>.</exception>
 public JsonSerializer(ISerializationManager serializationManager, ITypeFactory typeFactory, IObjectAdapter objectAdapter)
     : base(serializationManager, typeFactory, objectAdapter)
 {
     PreserveReferences = true;
     WriteTypeInfo      = true;
 }
예제 #28
0
        /// <summary>
        /// Apply this JsonPatchDocument  
        /// </summary>
        /// <param name="objectToApplyTo">Object to apply the JsonPatchDocument to</param>
        /// <param name="adapter">IObjectAdapter instance to use when applying</param>
        public void ApplyTo(object objectToApplyTo, IObjectAdapter adapter)
        {
            if (objectToApplyTo == null)
            {
                throw new ArgumentNullException(nameof(objectToApplyTo));
            }

            if (adapter == null)
            {
                throw new ArgumentNullException(nameof(adapter));
            }

            // apply each operation in order
            foreach (var op in Operations)
            {
                op.Apply(objectToApplyTo, adapter);
            }
        }
예제 #29
0
        /// <summary>
        /// Initializes the <see cref="ViewToViewModelMapping"/> for the specified <see cref="IViewModelContainer"/>.
        /// </summary>
        /// <param name="viewModelContainer">The view model container to initialize the mappings for.</param>
        /// <param name="objectAdapter">The object adapter.</param>
        /// <exception cref="ArgumentNullException">The <paramref name="viewModelContainer"/> is <c>null</c>.</exception>
        public static void InitializeViewToViewModelMappings(IViewModelContainer viewModelContainer, IObjectAdapter objectAdapter)
        {
            Argument.IsNotNull("viewModelContainer", viewModelContainer);

            if (_viewModelContainers.ContainsKey(viewModelContainer))
            {
                return;
            }

            _viewModelContainers.Add(viewModelContainer, new ViewToViewModelMappingHelper(viewModelContainer, objectAdapter));
        }
예제 #30
0
 /// <summary>
 /// Initializes a new instance of the <see cref="BinarySerializer" /> class.
 /// </summary>
 /// <param name="serializationManager">The serialization manager.</param>
 /// <param name="typeFactory">The type factory.</param>
 /// <param name="objectAdapter">The object adapter.</param>
 /// <exception cref="ArgumentNullException">The <paramref name="serializationManager" /> is <c>null</c>.</exception>
 public BinarySerializer(ISerializationManager serializationManager, ITypeFactory typeFactory, IObjectAdapter objectAdapter)
     : base(serializationManager, typeFactory, objectAdapter)
 {
     if (DeserializationBinder is null)
     {
         DeserializationBinder = new RedirectDeserializationBinder();
     }
 }
예제 #31
0
        /// <summary>
        /// Initializes a new instance of the <see cref="AutoCompletionService"/> class.
        /// </summary>
        public AutoCompletionService(IObjectAdapter objectAdapter)
        {
            Argument.IsNotNull(nameof(objectAdapter), objectAdapter);

            _objectAdapter = objectAdapter;
        }
 public PaymentRepository(IObjectAdapter<NewPayment, AddPaymentRequest> adapter)
 {
     _adapter = adapter;
 }