public string ReplaceProperty(string propertyName, string format, object context) { if (String.IsNullOrEmpty(propertyName)) { return(propertyName); } switch (propertyName) { case "APPLICATION_NAME": return(ChoObject.Format(ChoGlobalApplicationSettings.Me.ApplicationName, format)); case "PROCESS_ID": return(ChoObject.Format(ChoApplication.ProcessId, format)); case "THREAD_ID": return(ChoObject.Format(ChoApplication.GetThreadId(), format)); case "THREAD_NAME": return(ChoObject.Format(ChoApplication.GetThreadName(), format)); case "RANDOM_NO": return(ChoObject.Format(ChoRandom.NextRandom(), format)); case "TODAY": if (String.IsNullOrEmpty(format)) { return(System.DateTime.Today.ToShortDateString()); } else { return(ChoObject.Format(System.DateTime.Today, format)); } case "NOW": if (String.IsNullOrEmpty(format)) { return(System.DateTime.Now.ToShortTimeString()); } else { return(ChoObject.Format(System.DateTime.Now, format)); } case "SEQ_NO": return(ChoObject.Format(_sequenceGeneratorSettings.Value.Next(), format)); default: return(ChoObject.Format(propertyName, format)); } }
public static string ToString(object target, string formatName) { if (target == null) { return(String.Empty); } if (!HasFormatterSpecified(target)) { Func <object, string> customFormatter = ChoGlobalObjectFormatters.GetObjectFormatHandler(target.GetType(), formatName); if (customFormatter != null) { return(customFormatter(target)); } else { ICustomFormatter formatter = ChoFormatProvider.Instance.GetFormat(target.GetType()) as ICustomFormatter; ICustomFormatter tmpFormatter = formatter; if (ChoApplication.OnObjectFormatterResolve(target.GetType(), out tmpFormatter)) { formatter = tmpFormatter; } if (formatter != null) { return(formatter.Format(formatName, target, null)); } else if (formatName.IsNullOrWhiteSpace()) { return(ToString(target)); } else { return(ChoObject.Format(target, formatName)); } } } else { return(ToString(target)); } }
public string ReplaceProperty(string propertyName, string format, object context) { if (String.IsNullOrEmpty(propertyName)) { return(propertyName); } switch (propertyName) { case "APP_DOMAIN_NAME": return(ChoObject.Format(ChoApplication.AppDomainName, format)); case "APP_ENVIRONMENT": return(ChoObject.Format(ChoApplication.AppEnvironment, format)); case "APP_BASE_DIR": return(ChoObject.Format(ChoApplication.ApplicationBaseDirectory, format)); case "APP_CONFIG_DIR": return(ChoObject.Format(ChoApplication.ApplicationConfigDirectory, format)); case "APP_LOG_DIR": return(ChoObject.Format(ChoApplication.ApplicationLogDirectory, format)); case "APP_MODE": return(ChoObject.Format(ChoApplication.ApplicationMode, format)); case "ENTRY_ASSEMBLY_FILE_NAME": return(ChoObject.Format(ChoApplication.EntryAssemblyFileName, format)); case "ENTRY_ASSEMBLY_LOCATION": return(ChoObject.Format(ChoApplication.EntryAssemblyLocation, format)); } return(propertyName); }
private static string ToString(object target, bool collectErrMsgs, ChoMemberFormatterAttribute memberFormaterAttribute1, ChoMemberItemFormatterAttribute memberItemFormaterAttribute1, BindingFlags bindingFlags) { if (target == null) { return(String.Empty); } if (memberFormaterAttribute1 != null && memberFormaterAttribute1.CanFormat()) { if (target.GetType().IsSimple()) { return(memberFormaterAttribute1.FormatObject(target)); } else { ChoStringMsgBuilder msg = new ChoStringMsgBuilder(); //msg.AppendLineIfNoNL(memberFormaterAttribute1.FormatObject(target)); msg.Append(memberFormaterAttribute1.FormatObject(target)); //msg.AppendNewLine(); if (collectErrMsgs) { GetErrorMsgs(target, msg); } return(msg.ToString()); } } else if (target.GetType().IsSimple() || target.GetType().IsMethodImplemented("ToString")) { return(target.ToString()); } else if (target is Delegate) { return(String.Format("{0}.{1}", ((Delegate)target).Target == null ? "[Static]" : ((Delegate)target).Target.GetType().FullName, ((Delegate)target).Method.Name)); } else if (target is IEnumerable) { StringBuilder arrMsg = new StringBuilder(); int count = 0; foreach (object item in (IEnumerable)target) { count++; arrMsg.AppendFormat("{0}{1}", ToString(item, collectErrMsgs, memberItemFormaterAttribute1, null, bindingFlags), Environment.NewLine); } return("[Count: {0}]{1}{2}".FormatString(count, Environment.NewLine, arrMsg.ToString())); } else { bool foundMatchingFormatter = false; string retValue = ChoObject.Format(target, null, out foundMatchingFormatter); if (foundMatchingFormatter) { if (target.GetType().IsSimple()) { return(retValue); } else { ChoStringMsgBuilder msg = new ChoStringMsgBuilder(); msg.AppendFormat(retValue); msg.AppendNewLine(); if (collectErrMsgs) { GetErrorMsgs(target, msg); } return(msg.ToString()); } } else { ChoInterceptableObject interceptableObject = null; try { if (ChoType.IsRealProxyObject(target.GetType())) { interceptableObject = ChoInterceptableObject.Silentable(target as ChoInterceptableObject); } ChoTypeFormatterAttribute objectFormatter = ChoType.GetAttribute(target.GetType(), typeof(ChoTypeFormatterAttribute)) as ChoTypeFormatterAttribute; if (objectFormatter == null) { ChoStringMsgBuilder msg = new ChoStringMsgBuilder(memberFormaterAttribute1 == null ? String.Format("{0} State", target.GetType().FullName) : memberFormaterAttribute1.Name); //MemberInfo[] memberInfos = target.GetType().GetMembers(bindingFlags /*BindingFlags.Public | BindingFlags.Instance /*| BindingFlags.DeclaredOnly*/ /*| BindingFlags.GetField | BindingFlags.GetProperty*/); IEnumerable <MemberInfo> memberInfos = ChoType.GetGetFieldsNProperties(target.GetType(), bindingFlags); if (memberInfos == null || memberInfos.Count() == 0) { msg.AppendFormatLine(ChoStringMsgBuilder.Empty); } else { foreach (MemberInfo memberInfo in memberInfos) { if (!ChoType.IsValidObjectMember(memberInfo)) { continue; } ChoIgnoreMemberFormatterAttribute memberFormatterIgnoreAttribute = ChoType.GetMemberAttribute(memberInfo, typeof(ChoIgnoreMemberFormatterAttribute)) as ChoIgnoreMemberFormatterAttribute; if (memberFormatterIgnoreAttribute != null) { continue; } string memberText = GetNFormatMemberValue(target, memberInfo, collectErrMsgs, null, null, bindingFlags); int count = 0; if (GetCountFromMsg(ref memberText, ref count)) { msg.AppendFormatLine("{0} [Length: {2}]: {1}", memberInfo.Name, memberText, count); } else if (!memberText.ContainsHeader()) { msg.AppendFormatLine("{0}: {1}", memberInfo.Name, memberText); } else { msg.AppendFormatLine("{0}: {1}", memberInfo.Name, memberText); } } } msg.AppendNewLine(); if (collectErrMsgs) { GetErrorMsgs(target, msg); } return(msg.ToString()); } else { ChoStringMsgBuilder msg = new ChoStringMsgBuilder(ChoString.ExpandProperties(target, objectFormatter.Header));; if (objectFormatter.HasFormatSpecified) { msg.AppendFormat(objectFormatter.FormatObject(target)); } else { //MemberInfo[] memberInfos = target.GetType().GetMembers(bindingFlags /*BindingFlags.NonPublic | BindingFlags.Public | BindingFlags.Instance /*| BindingFlags.DeclaredOnly*/ /*| BindingFlags.GetField | BindingFlags.GetProperty*/); IEnumerable <MemberInfo> memberInfos = ChoType.GetGetFieldsNProperties(target.GetType(), bindingFlags); if (memberInfos == null || memberInfos.Count() == 0) { msg.AppendFormatLine(ChoStringMsgBuilder.Empty); } else { bool isPublicMember = true; foreach (MemberInfo memberInfo in memberInfos) { if (!ChoType.IsValidObjectMember(memberInfo)) { continue; } isPublicMember = true; ChoIgnoreMemberFormatterAttribute memberFormatterIgnoreAttribute = ChoType.GetMemberAttribute(memberInfo, typeof(ChoIgnoreMemberFormatterAttribute)) as ChoIgnoreMemberFormatterAttribute; if (memberFormatterIgnoreAttribute != null) { continue; } ChoMemberFormatterAttribute memberFormaterAttribute = ChoType.GetMemberAttribute(memberInfo, typeof(ChoMemberFormatterAttribute)) as ChoMemberFormatterAttribute; ChoMemberItemFormatterAttribute memberItemFormaterAttribute = ChoType.GetMemberAttribute(memberInfo, typeof(ChoMemberItemFormatterAttribute)) as ChoMemberItemFormatterAttribute; if (memberInfo is PropertyInfo) { MethodInfo getMethod = ((PropertyInfo)memberInfo).GetGetMethod(true); isPublicMember = getMethod != null && getMethod.IsPublic; } else if (memberInfo is FieldInfo) { isPublicMember = ((FieldInfo)memberInfo).IsPublic; } else { continue; } if (isPublicMember || (!isPublicMember && memberFormaterAttribute != null)) { object memberValue = ChoType.GetMemberValue(target, memberInfo); if (memberValue == target) { return(null); } string memberText = GetNFormatMemberValue(target, memberInfo, collectErrMsgs, memberFormaterAttribute, memberItemFormaterAttribute, bindingFlags); string memberName = memberFormaterAttribute == null || memberFormaterAttribute.Name.IsNullOrEmpty() ? memberInfo.Name : ChoPropertyManager.ExpandProperties(target, memberFormaterAttribute.Name); if (memberFormaterAttribute == null || !memberFormaterAttribute.CanFormat()) { int count = 0; if (GetCountFromMsg(ref memberText, ref count)) { msg.AppendFormatLine("{0} [Length: {2}]: {1}", memberName, memberText, count); } else if (memberText.ContainsHeader()) { msg.AppendFormatLine("{0}: {1}", memberName, memberText); } else { msg.AppendFormatLine("{0}: {1}", memberName, memberText); } } else if (memberFormaterAttribute.Name == ChoNull.NullString) { msg.Append(memberFormaterAttribute.PostFormat(memberName, memberText)); } else { msg.AppendFormat(memberFormaterAttribute.PostFormat(memberName, memberText)); } } } } } //msg.AppendNewLine(); if (collectErrMsgs) { GetErrorMsgs(target, msg); } return(msg.ToString()); } } finally { if (interceptableObject != null) { interceptableObject.Dispose(); } } } } }
public string ReplaceProperty(string propertyName, string format, object context) { if (String.IsNullOrEmpty(propertyName)) { return(propertyName); } switch (propertyName) { case "CURRENT_DIRECTORY": return(ChoObject.Format(Environment.CurrentDirectory, format)); case "MACHINE_NAME": return(ChoObject.Format(Environment.MachineName, format)); case "OS_VERSION": return(ChoObject.Format(Environment.OSVersion, format)); case "PROCESSOR_COUNT": return(ChoObject.Format(Environment.ProcessorCount, format)); case "SYSTEM_DIRECTORY": return(ChoObject.Format(Environment.SystemDirectory, format)); case "SYSTEM_PAGE_SIZE": return(ChoObject.Format(Environment.SystemPageSize, format)); case "TICK_COUNT": return(ChoObject.Format(Environment.TickCount, format)); case "USER_DOMAIN_NAME": return(ChoObject.Format(Environment.UserDomainName, format)); case "USER_NAME": return(ChoObject.Format(Environment.UserName, format)); case "VERSION": return(ChoObject.Format(Environment.Version, format)); case "WORKING_SET": return(ChoObject.Format(Environment.WorkingSet, format)); default: { string envVar = Environment.GetEnvironmentVariable(propertyName); if (!envVar.IsNullOrWhiteSpace()) { return(ChoObject.Format(envVar, format)); } Environment.SpecialFolder specialFolder; if (Enum.TryParse <Environment.SpecialFolder>(propertyName, out specialFolder)) { try { return(ChoObject.Format(Environment.GetFolderPath(specialFolder), format)); } catch { } } return(propertyName); } } }