private object[] _deserializedData; // only used for deserialization public DataManager( ClientTransaction clientTransaction, IClientTransactionEventSink transactionEventSink, IDataContainerEventListener dataContainerEventListener, IInvalidDomainObjectManager invalidDomainObjectManager, IObjectLoader objectLoader, IRelationEndPointManager relationEndPointManager) { ArgumentUtility.CheckNotNull("clientTransaction", clientTransaction); ArgumentUtility.CheckNotNull("transactionEventSink", transactionEventSink); ArgumentUtility.CheckNotNull("dataContainerEventListener", dataContainerEventListener); ArgumentUtility.CheckNotNull("invalidDomainObjectManager", invalidDomainObjectManager); ArgumentUtility.CheckNotNull("objectLoader", objectLoader); ArgumentUtility.CheckNotNull("relationEndPointManager", relationEndPointManager); _clientTransaction = clientTransaction; _transactionEventSink = transactionEventSink; _dataContainerEventListener = dataContainerEventListener; _invalidDomainObjectManager = invalidDomainObjectManager; _objectLoader = objectLoader; _relationEndPointManager = relationEndPointManager; _dataContainerMap = new DataContainerMap(_transactionEventSink); _domainObjectStateCache = new DomainObjectStateCache(clientTransaction); }
void IDeserializationCallback.OnDeserialization(object sender) { var doInfo = new FlattenedDeserializationInfo(_deserializedData); _clientTransaction = doInfo.GetValueForHandle <ClientTransaction> (); _transactionEventSink = doInfo.GetValueForHandle <IClientTransactionEventSink> (); _dataContainerEventListener = doInfo.GetValueForHandle <IDataContainerEventListener> (); _dataContainerMap = doInfo.GetValue <DataContainerMap>(); _relationEndPointManager = doInfo.GetValueForHandle <RelationEndPointManager>(); _domainObjectStateCache = doInfo.GetValue <DomainObjectStateCache>(); _invalidDomainObjectManager = doInfo.GetValue <IInvalidDomainObjectManager> (); _objectLoader = doInfo.GetValueForHandle <IObjectLoader>(); _deserializedData = null; doInfo.SignalDeserializationFinished(); }