public ObjectSourceSynchronizer(SourceSynchronizerRoot sourceSynchronizerRoot, int referenceId, object reference) : base(sourceSynchronizerRoot, referenceId, reference) { Type type = Reference.GetType(); SynchronizableMember[] synchronizableMembers = sourceSynchronizerRoot.SynchronizableMemberFactory.FromType(type); SynchronizableSourceMembers = new SynchronizableSourceMember[synchronizableMembers.Length]; for (var i = 0; i < synchronizableMembers.Length; i++) { SynchronizableMember synchronizableMember = synchronizableMembers[i]; var synchronizableSourceMember = new SynchronizableSourceMember(Reference, synchronizableMember); SynchronizableSourceMembers[i] = synchronizableSourceMember; } for (var i = 0; i < SynchronizableSourceMembers.Length; i++) { SynchronizableSourceMember synchronizableSourceMember = SynchronizableSourceMembers[i]; if (!synchronizableSourceMember.IsValueType) { object initialValue = synchronizableSourceMember.Value; if (initialValue != null) { sourceSynchronizerRoot.Synchronize(initialValue); } } } }
public bool TryGetMemberByName(string memberName, out SynchronizableSourceMember synchronizableSourceMember) { for (var i = 0; i < SynchronizableSourceMembers.Length; i++) { SynchronizableSourceMember x = SynchronizableSourceMembers[i]; if (x.Name == memberName) { synchronizableSourceMember = x; return(true); } } synchronizableSourceMember = default; return(false); }