public Attribute CreateProxyInstance() { var interfaces = AnnotationClass .GetInterfaces() .ToArray(); return (Attribute) Generator.CreateClassProxy( AnnotationClass, interfaces, ProxyGenerationOptions.Default, this); }
private object HandleHashCode() { if (hashCode != null) { return hashCode; } var result = AnnotationClass.GetHashCode(); foreach (var key in Attributes.Keys) { result = 31 * result + key.GetHashCode(); } hashCode = result; return hashCode; }
private string HandleToString() { if (toStringResult == null) { var buf = new StringBuilder(); buf.Append("@"); buf.Append(AnnotationClass.GetSimpleName()); if (!Attributes.IsEmpty()) { var delimiter = ""; buf.Append("("); if (Attributes.Count == 1 && Attributes.ContainsKey("Value")) { if (Attributes.Get("Value") is string) { buf.Append("\""); buf.Append(Attributes.Get("Value")); buf.Append("\""); } else { buf.Append(Attributes.Get("Value")); } } else { foreach (var attribute in Attributes) { buf.Append(delimiter); buf.Append(attribute.Key); buf.Append("="); if (attribute.Value is string) { buf.Append("\""); buf.Append(attribute.Value); buf.Append("\""); } else { buf.Append(attribute.Value); } delimiter = ", "; } } buf.Append(")"); } toStringResult = buf.ToString(); } return toStringResult; }