/// <summary> /// Clones the event signature. /// </summary> /// <returns>Cloned copy of the event signature.</returns> public object Clone() { StackHashParameterCollection parameterCollection = new StackHashParameterCollection(); if (m_Parameters == null) { m_Parameters = new StackHashParameterCollection(); } foreach (StackHashParameter parameter in m_Parameters) { parameterCollection.Add(parameter.Clone() as StackHashParameter); } StackHashEventSignature eventSignature = new StackHashEventSignature(parameterCollection); eventSignature.ApplicationName = m_ApplicationName; eventSignature.ApplicationTimeStamp = m_ApplicationTimeStamp; eventSignature.ApplicationVersion = m_ApplicationVersion; eventSignature.ExceptionCode = m_ExceptionCode; eventSignature.ModuleName = m_ModuleName; eventSignature.ModuleTimeStamp = m_ModuleTimeStamp; eventSignature.ModuleVersion = m_ModuleVersion; eventSignature.Offset = m_Offset; return(eventSignature); }
public int CompareTo(object obj) { StackHashParameterCollection parameters = obj as StackHashParameterCollection; if (parameters.Count != this.Count) { return(-1); } foreach (StackHashParameter thisParam in this) { StackHashParameter matchingParam = parameters.FindParameter(thisParam.Name); if (matchingParam == null) { return(-1); } if ((matchingParam.Name == StackHashEventSignature.ParamApplicationTimeStamp) || (matchingParam.Name == StackHashEventSignature.ParamModuleTimeStamp)) { // Timestamps might be in a different format. DateTime matchingTimeStamp = DateTime.Parse(matchingParam.Value, CultureInfo.InvariantCulture); DateTime thisTimeStamp = DateTime.Parse(thisParam.Value, CultureInfo.InvariantCulture); if (matchingTimeStamp != thisTimeStamp) { return(-1); } } else { if (matchingParam.CompareTo(thisParam) != 0) { return(-1); } } } // Must be a match. return(0); }
public StackHashEventSignature(StackHashParameterCollection parameters) { m_Parameters = parameters; InterpretParameters(); }