public void Remove(PropertyDefinition beanInfo)
 {
     int index = list.IndexByKey(beanInfo.PropertyName);
     if (index > -1)
     {
         list.RemoveAt(index);
     }
 }
        public static PropertyDefinition[] GetProperties(Type classType, String propertyName)
        {
            FieldInfo[] fieldInfoList = GetPropertyFields(classType, propertyName);
            PropertyDefinition[] list = new PropertyDefinition[fieldInfoList.Length];

            for (int i = 0; i < fieldInfoList.Length; i++)
            {
                list[i] = new PropertyDefinition(fieldInfoList[i]);
            }
            return list;
        }
        public static PropertyDefinition[] GetProperties(Type classType, String propertyName)
        {
            PropertyInfo[] propertyInfoList = classType.GetProperties();
            PropertyDefinition[] list = new PropertyDefinition[propertyInfoList.Length];

            for (int i = 0; i < propertyInfoList.Length; i++)
            {
                list[i] = new PropertyDefinition(propertyInfoList[i]);
            }
            return list;
        }
        /**
         * ����ָ��Щ��GetXX��SetXX�������ֶΡ�
         *
         * @param obj
         * @param bRead
         * @param bWrite
         * @return
         * @
         */
        public static StringKeyList GetProperties(Type classType)
        {
            IgnoreCaseStringHashList list = new IgnoreCaseStringHashList();
            String propertyName = "";// ��������//
            String methodName;// ��������//
            int methodFlag;// �������ͣ�0Ϊһ�㷽����1Ϊ��������2Ϊд����//
            Type propertyType = null;// ��������//
            Type[] paramTypes;// �����IJ��������б�//
            MethodInfo[] m = classType.GetMethods();// ȡ�����ж���ķ���//
            for (int i = 0; i < m.Length; i++)
            {
                methodName = m[i].Name;
                methodFlag = 0;
                // ����������Ƶ�ǰ�����ַ���Get��Set������Ϊ�����������ƣ�
                // ���Ƿ�Ϊ��д��������Ҫ��һ���жϡ���Ϊ������û�в�����д
                // ������һ��������
                if (methodName.Substring(0, 3).Equals("Get"))
                {
                    methodFlag = 1;
                }
                else if (methodName.Substring(0, 3).Equals("Set"))
                {
                    methodFlag = 2;
                }
                // ���Ϊ��������Ӧ��û�в���,���Ϊд������Ӧ����һ������//
                paramTypes = TypeUtils.GetParameterTypes(m[i].GetParameters());
                if (methodFlag == 1)
                {
                    if (paramTypes.Length != 0)
                    {

                        methodFlag = 0;
                    }
                    else
                    {
                        propertyName = methodName.Substring(3);
                        propertyType = m[i].ReturnType;
                    }
                }
                else
                {
                    if (paramTypes.Length != 1)
                    {
                        methodFlag = 0;
                    }
                    else
                    {
                        propertyName = methodName.Substring(3);
                        propertyType = paramTypes[0];
                    }
                }
                // ���������Ŀ�Ƿ���ڣ�������ڣ�����Ҫ��һ��������������Ƿ�
                // һ�£������һ�£���ɾ�������ԡ�
                if (methodFlag > 0)
                {
                    PropertyDefinition property = (PropertyDefinition)list.GetValue(propertyName);
                    if (property == null)
                    {
                        // �������Զ���//
                        property = new PropertyDefinition();
                        // ������������//
                        property.PropertyName = propertyName;
                        property.PropertyType = propertyType;
                        // ���ö�д����//
                        if (methodFlag == 1)
                        {
                            property.ReadMethod = m[i];
                        }
                        else
                        {
                            property.WriteMethod = m[i];
                        }
                        // �������Ե������б�//
                        list.Add(property.PropertyName, property);
                    }
                    else
                    {
                        if (property.PropertyType == propertyType)
                        {
                            // ���ö�д����//
                            if (methodFlag == 1)
                            {
                                property.ReadMethod = m[i];
                            }
                            else
                            {
                                property.WriteMethod = m[i];
                            }
                        }
                        else
                        {
                            list.Remove(property.PropertyName);
                        }
                    }
                }
            }
            return list;
        }
 public void Insert(int index, PropertyDefinition beanInfo)
 {
     string propertyPath = IOCCommon.GetPropertyDefinitionKey(beanInfo.PropertyName, beanInfo.ParameterCount);
     list.Insert(index, propertyPath, beanInfo);
 }
 public void Add(PropertyDefinition beanInfo)
 {
     string propertyPath = IOCCommon.GetPropertyDefinitionKey(beanInfo.PropertyName, beanInfo.ParameterCount);
     list.Add(propertyPath, beanInfo);
 }