private static RemoteObject RegisterObject(JsonValue objectDef) { ulong id = objectDef["internalId"]; string className = objectDef["className"]; string name = objectDef["name"]; string path = objectDef["path"]; ulong parentInternalId = objectDef.ContainsKey("parentInternalId") ? (ulong)objectDef["parentInternalId"] : 0; RemoteObject obj; switch (className) { case "dcclite::Shortcut": obj = new RemoteShortcut(name, className, path, id, parentInternalId, objectDef["target"]); break; case "Decoder": case "OutputDecoder": case "SimpleOutputDecoder": case "SensorDecoder": case "ServoTurnoutDecoder": case "TurnoutDecoder": obj = new RemoteDecoder(name, className, path, id, parentInternalId, objectDef); break; case "SignalDecoder": obj = new RemoteSignalDecoder(name, className, path, id, parentInternalId, objectDef); break; case "NetworkDevice": obj = new RemoteDevice(name, className, path, id, parentInternalId, objectDef); break; case "Location": obj = new RemoteLocation(name, className, path, id, parentInternalId, objectDef); break; case "LocationManager": obj = new RemoteLocationManager(name, className, path, id, parentInternalId, objectDef); break; case "LoconetService": obj = new RemoteLoconetService(name, className, path, id, parentInternalId, objectDef); break; default: obj = objectDef["isFolder"] ? new RemoteFolder(name, className, path, id, parentInternalId) : new RemoteObject(name, className, path, id, parentInternalId); break; } gObjects.Add(id, obj); gObjectsByPath.Add(obj.Path, obj); return(obj); }
public LocationMismatch(RemoteDecoder decoder, String reason, String mappedLocation) { if (string.IsNullOrWhiteSpace(reason)) { throw new ArgumentNullException(nameof(reason)); } Decoder = decoder ?? throw new ArgumentNullException(nameof(decoder)); Reason = reason; MappedLocation = mappedLocation; }