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);
}