public override ServiceSkel CreateSkel(object obj)
        {
            string objtype = RobotRaconteurNode.GetTypeString(ServiceSkelUtil.FindParentInterface(obj.GetType()));
            string objshort;

            if (CompareNamespace(objtype, out objshort))
            {
                switch (objshort)
                {
                case "baseobj":
                    return(new baseobj_skel((baseobj)obj));

                case "subobj":
                    return(new subobj_skel((subobj)obj));

                default:
                    break;
                }
            }
            else
            {
                string ext_service_type = RobotRaconteurNode.SplitQualifiedName(objtype).Item1;
                return(RobotRaconteurNode.s.GetServiceFactory(ext_service_type).CreateSkel(obj));
            }
            throw new ServiceException("Could not create skel");
        }
        public override ServiceSkel CreateSkel(object obj)
        {
            string objtype = ServiceSkelUtil.UnfixName(ServiceSkelUtil.FindParentInterface(obj.GetType()).ToString());

            if (RobotRaconteurNode.SplitQualifiedName(objtype.ToString())[0].TrimEnd(new char[] { '_' }) == "sensors.ati.mini45")
            {
                string sobjtype = RemovePath(objtype);
                switch (sobjtype)
                {
                case "ATImini45Host":
                    return(new ATImini45Host_skel((ATImini45Host)obj));

                case "ATImini45":
                    return(new ATImini45_skel((ATImini45)obj));

                default:
                    break;
                }
            }
            else
            {
                string ext_service_type = RobotRaconteurNode.SplitQualifiedName(objtype.ToString())[0].TrimEnd(new char[] { '_' });
                return(RobotRaconteurNode.s.GetServiceFactory(ext_service_type).CreateSkel(obj));
            }
            throw new ServiceException("Could not create skel");
        }