public bool Equals(IMnBaseElement mnElement) { if (this.ElementId == mnElement.ElementId || (this.Name != null && this.Name.Equals(mnElement.Name, StringComparison.CurrentCultureIgnoreCase)) || (this.Title.EqualsTrim(mnElement.Title))) { return(true); } return(false); }
public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer) { IMnBaseElement element = value as MnBaseElement ?? value as IMnBaseElement; var properties = element.GetType().GetProperties(BindingFlags.Instance | BindingFlags.Public) .Where(p => !Attribute.IsDefined(p, typeof(JsonIgnoreAttribute))); writer.WriteStartObject(); writer.WritePropertyName("Type"); serializer.Serialize(writer, element.GetType().Name); if (this.GetType().Assembly.GetName().Name != element.GetType().Assembly.GetName().Name) { writer.WritePropertyName("Type.FullName"); serializer.Serialize(writer, element.GetType().FullName); writer.WritePropertyName("Type.AssemblyName"); serializer.Serialize(writer, element.GetType().Assembly.GetName().Name); } writer.WritePropertyName("IsCustomElement"); serializer.Serialize(writer, element is ICustomElement ? true : false); foreach (var property in properties) { if (Attribute.IsDefined(property, typeof(JsonConverterAttribute))) { var jsonAttr = property.GetCustomAttribute <JsonConverterAttribute>(false); if (jsonAttr.ConverterType == typeof(StringEnumConverter)) { writer.WritePropertyName(property.Name); serializer.Serialize(writer, Enum.ToObject(property.PropertyType, property.GetValue(element)).ToString()); } } else { writer.WritePropertyName(property.Name); serializer.Serialize(writer, property.GetValue(element)); } } writer.WriteEndObject(); }
//public static bool TryGet<T>(this IEnumerable<MnBaseElement> sourceElements, MnBaseElement searchElement, out T newElement) where T : MnBaseElement, new() //{ // newElement = new T(); // //Func<MnBaseElement, bool> filter = e => e.Equals(searchElement); // if (sourceElements.Any(e => e.Equals(searchElement))) // { // var tempElement = sourceElements.FirstOrDefault(e => e.Title.Equals(searchElement.Title)); // if (tempElement == null) // tempElement = sourceElements.FirstOrDefault(e => e.Name.Equals(searchElement.Name)); // if (tempElement == null) // tempElement = sourceElements.FirstOrDefault(e => e.ElementId.Equals(searchElement.ElementId)); // if (tempElement != null) // { // newElement = tempElement as T; // return true; // } // } // return false; //} public static bool TryGet <T>(this IEnumerable <IMnBaseElement> sourceElements, IMnBaseElement searchElement, out T newElement) where T : MnBaseElement, new() { newElement = new T(); //Func<MnBaseElement, bool> filter = e => e.Equals(searchElement); if (sourceElements.Any(e => e.Equals(searchElement))) { var tempElement = sourceElements.FirstOrDefault(e => e.Title.EqualsTrim(searchElement.Title)); if (tempElement == null) { tempElement = sourceElements.FirstOrDefault(e => e.Name.Equals(searchElement.Name)); } if (tempElement == null) { tempElement = sourceElements.FirstOrDefault(e => e.ElementId.Equals(searchElement.ElementId)); } if (tempElement != null) { newElement = tempElement as T; return(true); } } return(false); }
public static MvcHtmlString GenerateHiddenFields <TModel>(this HtmlHelper <TModel> Html, IMnBaseElement model) { var result = string.Empty; result += Html.Hidden("Name", model.Name).ToHtmlString(); result += Html.Hidden("Title", model.Title).ToHtmlString(); result += Html.Hidden("HelpText", model.HelpText).ToHtmlString(); result += Html.Hidden("ElementId", model.ElementId).ToHtmlString(); result += Html.Hidden("CurrentMode", model.CurrentMode).ToHtmlString(); result += Html.Hidden("VisibleMode", model.VisibleMode).ToHtmlString(); result += Html.Hidden("ModelType", model.GetType()).ToHtmlString(); result = model.AccessRole.Aggregate(result, (current, accRole) => current + Html.HiddenFor(modelItem => accRole).ToHtmlString()); return(MvcHtmlString.Create(result)); }