System.MonoCustomAttrs.GetBasePropertyDefinition C# (CSharp) Метод

GetBasePropertyDefinition() статический приватный Метод

static private GetBasePropertyDefinition ( PropertyInfo property ) : PropertyInfo
property System.Reflection.PropertyInfo
Результат System.Reflection.PropertyInfo
		static PropertyInfo GetBasePropertyDefinition (PropertyInfo property)
		{
			MethodInfo method = property.GetGetMethod (true);
			if (method == null || !method.IsVirtual)
				method = property.GetSetMethod (true);
			if (method == null || !method.IsVirtual)
				return null;

			MethodInfo baseMethod = method.GetBaseMethod ();
			if (baseMethod != null && baseMethod != method) {
				ParameterInfo[] parameters = property.GetIndexParameters ();
				if (parameters != null && parameters.Length > 0) {
					Type[] paramTypes = new Type[parameters.Length];
					for (int i=0; i < paramTypes.Length; i++)
						paramTypes[i] = parameters[i].ParameterType;
					return baseMethod.DeclaringType.GetProperty (property.Name, property.PropertyType, 
										     paramTypes);
				} else {
					return baseMethod.DeclaringType.GetProperty (property.Name, property.PropertyType);
				}
			}
			return null;

		}

Usage Example

Пример #1
0
        private static ICustomAttributeProvider GetBase(ICustomAttributeProvider obj)
        {
            if (obj == null)
            {
                return(null);
            }
            if (obj is Type)
            {
                return(((Type)obj).BaseType);
            }
            MethodInfo methodInfo = null;

            if (obj is MonoProperty)
            {
                return(MonoCustomAttrs.GetBasePropertyDefinition((MonoProperty)obj));
            }
            if (obj is MonoMethod)
            {
                methodInfo = (MethodInfo)obj;
            }
            if (methodInfo == null || !methodInfo.IsVirtual)
            {
                return(null);
            }
            MethodInfo baseDefinition = methodInfo.GetBaseDefinition();

            if (baseDefinition == methodInfo)
            {
                return(null);
            }
            return(baseDefinition);
        }