/// <summary> /// Finds the child with the specified browse name. /// </summary> protected override BaseInstanceState FindChild( ISystemContext context, QualifiedName browseName, bool createOrReplace, BaseInstanceState replacement) { if (QualifiedName.IsNull(browseName)) { return null; } BaseInstanceState instance = null; switch (browseName.Name) { case Opc.Ua.Di.BrowseNames.Locked: { if (createOrReplace) { if (Locked == null) { if (replacement == null) { Locked = new PropertyState<bool>(this); } else { Locked = (PropertyState<bool>)replacement; } } } instance = Locked; break; } case Opc.Ua.Di.BrowseNames.LockingClient: { if (createOrReplace) { if (LockingClient == null) { if (replacement == null) { LockingClient = new PropertyState<string>(this); } else { LockingClient = (PropertyState<string>)replacement; } } } instance = LockingClient; break; } case Opc.Ua.Di.BrowseNames.LockingUser: { if (createOrReplace) { if (LockingUser == null) { if (replacement == null) { LockingUser = new PropertyState<string>(this); } else { LockingUser = (PropertyState<string>)replacement; } } } instance = LockingUser; break; } case Opc.Ua.Di.BrowseNames.RemainingLockTime: { if (createOrReplace) { if (RemainingLockTime == null) { if (replacement == null) { RemainingLockTime = new PropertyState<double>(this); } else { RemainingLockTime = (PropertyState<double>)replacement; } } } instance = RemainingLockTime; break; } case Opc.Ua.Di.BrowseNames.InitLock: { if (createOrReplace) { if (InitLock == null) { if (replacement == null) { InitLock = new InitLockMethodState(this); } else { InitLock = (InitLockMethodState)replacement; } } } instance = InitLock; break; } case Opc.Ua.Di.BrowseNames.RenewLock: { if (createOrReplace) { if (RenewLock == null) { if (replacement == null) { RenewLock = new RenewLockMethodState(this); } else { RenewLock = (RenewLockMethodState)replacement; } } } instance = RenewLock; break; } case Opc.Ua.Di.BrowseNames.ExitLock: { if (createOrReplace) { if (ExitLock == null) { if (replacement == null) { ExitLock = new ExitLockMethodState(this); } else { ExitLock = (ExitLockMethodState)replacement; } } } instance = ExitLock; break; } case Opc.Ua.Di.BrowseNames.BreakLock: { if (createOrReplace) { if (BreakLock == null) { if (replacement == null) { BreakLock = new BreakLockMethodState(this); } else { BreakLock = (BreakLockMethodState)replacement; } } } instance = BreakLock; break; } } if (instance != null) { return instance; } return base.FindChild(context, browseName, createOrReplace, replacement); }