internal ISOViewModelBase(ISerializableObject thisObj, ISOViewModelContainer container)
        {
            _obj = thisObj;
            _container = container;
            Name = getName();
            Icon = getIcon();

            if (!isRoot())
            {
                var pVM = _container.getViewModelForISO(Parent);
                pVM.injectChild(this);
            }

            fillProperties();
        }
        public static ISOViewModelBase fromISO(ISerializableObject obj, ISOViewModelContainer container)
        {
            if (obj != null && container != null)
            {
                if(obj is CollectionEventSeries)
                    return new EventSeriesVM(obj as CollectionEventSeries,container);
                if (obj is CollectionEvent)
                    return new CollectionEventVM(obj as CollectionEvent, container);
                if (obj is CollectionSpecimen)
                    return new CollectionSpecimenVM(obj as CollectionSpecimen, container);
                if (obj is IdentificationUnitAnalysis)
                    return new IUAnalysisVM(obj as IdentificationUnitAnalysis, container);
                if (obj is IdentificationUnitGeoAnalysis)
                    return new IUGeoAnalysisVM(obj as IdentificationUnitGeoAnalysis, container);

                if (obj is IdentificationUnit)
                    return new IdentificationUnitVM(obj as IdentificationUnit, container);

                return new DefaultVM(obj, container);

            }
            return null;
        }