protected virtual bool ShoudlLog(MemberInfo m, out IGetter getter) { getter = null; /// /// Check if ToLog annotation exists /// if (!Attribute.IsDefined(m, typeof(ToLogAttribute))) { return(false); } /// /// Check if is a field or parameterless method /// if (m.MemberType == MemberTypes.Field) { getter = new GetterField((FieldInfo)m); return(true); } if (m.MemberType == MemberTypes.Method) { MethodInfo mi = (MethodInfo)m; if (mi.GetParameters().Length == 0) { getter = new GetterMethod((MethodInfo)m); return(true); } } return(false); }
/// <summary> /// Validate if that member m should be logged, i.e. it must have a ToLog annotation /// and be a field or a parameterless method. /// Also it may return an instance of GetterField or GetterMethod. /// </summary> protected virtual bool ShouldLog(MemberInfo m, out IGetter getter) { getter = null; /** * Check if it is annotated with ToLog */ if (!Attribute.IsDefined(m, typeof(ToLogAttribute))) { return(false); } /** * Check if it is a Field */ if (m.MemberType == MemberTypes.Field) { getter = new GetterField((FieldInfo)m); return(true); } /** * Check if it is a parameterless method */ if (m.MemberType == MemberTypes.Method && (m as MethodInfo).GetParameters().Length == 0) { getter = new GetterMethod((MethodInfo)m); return(true); } return(false); }
protected override bool ShoudlLog(MemberInfo m, out IGetter getter) { getter = null; /// /// Check if ToLog annotation exists /// ToLogAttribute attr = (ToLogAttribute)m.GetCustomAttribute(typeof(ToLogAttribute)); if (attr == null) { return(false); } /// /// Check if is a field or parameterless method /// if (m.MemberType == MemberTypes.Field) { getter = new GetterField((FieldInfo)m); } if (m.MemberType == MemberTypes.Method) { MethodInfo mi = (MethodInfo)m; if (mi.GetParameters().Length == 0) { getter = new GetterMethod((MethodInfo)m); } } if (getter == null) { return(false); } if (attr.FormatterType != null) { getter = new GetterFormatter(getter, attr.FormatterType, attr.CtorArgs); } return(true); }
static List <IGetter> CheckMembersOf(Type klass) { List <IGetter> ms; if (cache.TryGetValue(klass, out ms)) { return(ms); } ms = new List <IGetter>(); foreach (FieldInfo f in klass.GetFields()) { if (CheckToLog(f)) { IGetter getter = new GetterField(f); ms.Add(CheckToFormatter(f, getter)); } } foreach (PropertyInfo p in klass.GetProperties()) { if (CheckToLog(p)) { IGetter getter = new GetterProperty(p); ms.Add(CheckToFormatter(p, getter)); } } /* * foreach (MethodInfo m in klass.GetMethods()) { * if(m.GetParameters().Length == 0 && m.ReturnType != typeof(void)) { * ms.Add(new GetterMethod(m)); * } * }*/ cache.Add(klass, ms); // cache[klass] = ms return(ms); }