コード例 #1
0
ファイル: Reflector.cs プロジェクト: niumlaque/hakaba
        /// <summary>
        /// source 静的フィールド fieldName の index 番目に値を設定します。
        /// </summary>
        /// <param name="source">設定するフィールドを静的に保持するインスタンス。</param>
        /// <param name="fieldName">設定するフィールド名。</param>
        /// <param name="index">設定するフィールドのインデックス。</param>
        /// <param name="value">設定する値。</param>
        public static void ArrayField(Type type, string fieldName, int index, object value)
        {
            var field = type.GetField(fieldName, Reflector.InstanceAllFlags);

            if (field == null)
            {
                throw FieldReflectionException.NotFound(type, fieldName);
            }

            var obj = field.GetValue(null);

            if (obj == null)
            {
                throw FieldReflectionException.NullCollection(type, fieldName);
            }

            var list = obj as System.Collections.IList;

            if (list == null)
            {
                throw FieldReflectionException.CannotSetToCollection(type, fieldName);
            }

            list[index] = value;
        }
コード例 #2
0
ファイル: Reflector.cs プロジェクト: niumlaque/hakaba
        /// <summary>
        /// source インスタンスのメンバフィールド fieldName の index 番目の値を取得します。
        /// </summary>
        /// <param name="source">取得するフィールドをメンバとして保持するインスタンス。</param>
        /// <param name="fieldName">取得するフィールド名。</param>
        /// <param name="index">取得するフィールドのインデックス。</param>
        /// <returns>指定したフィールドの index 番目の値。</returns>
        public static object ArrayField(this object source, string fieldName, int index)
        {
            var field = source.GetType().GetField(fieldName, Reflector.InstanceAllFlags);

            if (field == null)
            {
                throw FieldReflectionException.NotFound(source.GetType(), fieldName);
            }

            var obj = field.GetValue(source);

            if (obj == null)
            {
                throw FieldReflectionException.NullCollection(source.GetType(), fieldName);
            }

            var list = obj as System.Collections.IList;

            if (list == null)
            {
                throw FieldReflectionException.CannotSetToCollection(source.GetType(), fieldName);
            }

            return(list[index]);
        }