Example #1
0
        public GeneratorObjectPropertyItemList(IObjectPropertyItemList property, IGeneratorObject obj)
            : base(property, obj)
        {
            BaseProperty = property;

            if (property == ObjectPropertyItemList.NavigationHistoryProperty)
            {
                GeneratorObjectPropertyMap.Add(property, this);
            }
        }
        private void ConnectItem(IDomain domain, IArea currentArea, IObject currentObject, ref bool IsConnected)
        {
            IObject Object = ItemObject;
            IObjectPropertyItemList ObjectProperty = ItemObjectProperty;
            IObject NestedObject = ItemNestedObject;

            IsConnected        = ItemProperty.ConnectToObjectItemList(domain, currentArea, currentObject, ref Object, ref ObjectProperty, ref NestedObject);
            ItemObject         = Object;
            ItemObjectProperty = ObjectProperty;
            ItemNestedObject   = NestedObject;

            ItemObjectProperty?.SetIsRead();
        }
Example #3
0
        public bool ConnectToObjectItemList(IDomain domain, IArea currentArea, IObject currentObject, ref IObject obj, ref IObjectPropertyItemList objectProperty, ref IObject ItemObject)
        {
            bool IsConnected = false;

            if ((ObjectSource != null || ObjectPropertySource != null) && (obj == null || objectProperty == null))
            {
                ConnectToObject(domain, currentArea, ObjectSource, ObjectPropertySource, ObjectPropertyKey, ref obj);

                foreach (IObjectProperty Property in obj.Properties)
                {
                    if (Property.NameSource.Name == ObjectPropertySource.Name)
                    {
                        if (Property is IObjectPropertyItemList AsObjectPropertyItemList)
                        {
                            objectProperty = AsObjectPropertyItemList;
                            break;
                        }
                        else
                        {
                            throw new ParsingException(151, ObjectPropertySource.Source, $"'{obj.Name}.{ObjectPropertySource.Name}' must be an item list property.");
                        }
                    }
                }

                if (objectProperty == null)
                {
                    throw new ParsingException(141, ObjectPropertySource.Source, $"Unknown property '{ObjectPropertySource.Name}' in object '{obj.Name}'.");
                }

                foreach (IObject Item in domain.Objects)
                {
                    if (Item.Name == objectProperty.ObjectSource.Name)
                    {
                        ItemObject = Item;
                        break;
                    }
                }

                if (ItemObject == null)
                {
                    throw new ParsingException(152, ObjectPropertySource.Source, $"Unknown object '{objectProperty.ObjectSource.Name}' for item list '{ObjectPropertySource.Name}'.");
                }

                IsConnected = true;
            }

            return(IsConnected);
        }