1 //----------------------------------------------------------------
2 // Copyright (c) Microsoft Corporation. All rights reserved.
3 //----------------------------------------------------------------
4 namespace System.Activities.Presentation.Internal.PropertyEditing.State
7 using System.Diagnostics;
10 // Aggregate of IStateContainer objects
12 internal class AggregateStateContainer : IStateContainer
15 private IStateContainer[] _containers;
17 public AggregateStateContainer(params IStateContainer[] containers) {
18 _containers = containers;
21 public object RetrieveState()
23 object[] states = null;
25 if (_containers != null)
27 states = new object[_containers.Length];
28 for (int i = 0; i < _containers.Length; i++)
30 states[i] = _containers[i] == null ? null : _containers[i].RetrieveState();
37 public void RestoreState(object state)
39 if (_containers != null)
42 object[] states = state as object[];
43 if (states == null || states.Length != _containers.Length)
45 Debug.Fail("Invalid state to restore: " + (state == null ? "null" : state.ToString()));
49 for (int i = 0; i < _containers.Length; i++)
51 if (_containers[i] != null)
53 _containers[i].RestoreState(states[i]);