Esempio n. 1
0
        public static bool IsSimillar(CItem itemA, CItem itemB)
        {
            if (itemA.GetType() != itemB.GetType())
            {
                return(false);
            }

            FieldInfo[] propertiesA = itemA.GetType().GetFields(); // @todo dodać filtr żeby zwracał tylko pola przedmiotu a nie wszystkie
            FieldInfo[] propertiesB = itemB.GetType().GetFields();
            object      objA, objB;

            foreach (FieldInfo fieldA in propertiesA)
            {
                foreach (FieldInfo fieldB in propertiesB)
                {
                    if (fieldA.Name == fieldB.Name)
                    {
                        objA = fieldA.GetValue(itemA);
                        objB = fieldB.GetValue(itemB);
                        if (objA != null && objB != null)
                        {
                            if (!objA.Equals(objB))
                            {
                                return(false);
                            }
                        }

                        break;
                    }
                }
            }
            return(true);
        }
Esempio n. 2
0
        public string ToJson(bool skipDefault = true)
        {
            CItem   original   = Globals.Managers.item.GetItemByID(id, true);
            JObject jsonObject = new JObject();

            if (skipDefault)
            {
                jsonObject["id"] = id;
                FieldInfo[] propertiesA = original.GetType().GetFields(); // @todo dodać filtr żeby zwracał tylko pola przedmiotu a nie wszystkie
                FieldInfo[] propertiesB = this.GetType().GetFields();
                object      objA, objB;
                foreach (FieldInfo field in propertiesA)
                {
                    objA = field.GetValue(original);
                    objB = field.GetValue(this);
                    if (objA != null && objB != null)
                    {
                        if (!objA.Equals(objB) || field.Name == "position")
                        {
                            jsonObject[field.Name] = JsonConvert.SerializeObject(objB);
                        }
                    }
                }
            }
            else
            {
                FieldInfo[] properties = GetType().GetFields();
                foreach (FieldInfo field in properties)
                {
                    jsonObject[field.Name] = JsonConvert.SerializeObject(field.GetValue(this));
                }
            }
            return(jsonObject.ToString(Formatting.None));
        }