コード例 #1
0
ファイル: Record.cs プロジェクト: sonygod/dotahit
        /// <summary>
        /// создает полностью независимую копию этой коллекции (ссылки на одинаковые значения разные)
        /// </summary>
        /// <returns></returns>
        public RecordCollection Clone()
        {
            RecordCollection Collection = new RecordCollection();

            foreach (IRecord r in this)
            {
                Collection.Add(r.Clone());
            }

            return(Collection);
        }
コード例 #2
0
ファイル: Record.cs プロジェクト: sonygod/dotahit
        public RecordCollection GetRangeByUnitEx(string UnitName, object Value)
        {
            RecordCollection range = new RecordCollection();

            foreach (IRecord r in this)
            {
                IField sdu;
                if (r.Fields.TryGetByName(UnitName, out sdu) && sdu.ValueEquals(Value))
                {
                    range.AddEx(r);
                }
            }
            return(range);
        }
コード例 #3
0
ファイル: Record.cs プロジェクト: sonygod/dotahit
        public RecordCollection GetRangeByMethod(string methodName, object desiredReturnValue, params object[] args)
        {
            RecordCollection range = new RecordCollection();

            foreach (IRecord r in this)
            {
                object result = null;
                try
                {
                    result = r.GetType().InvokeMember(methodName,
                                                      BindingFlags.Public | BindingFlags.Instance
                                                      | BindingFlags.InvokeMethod,
                                                      null, r, args);
                }
                catch { }

                if (desiredReturnValue == result)
                {
                    range.Add(r);
                }
            }
            return(range);
        }