static DataBindOption GetOption(Type type, PropertyInfo property) { if (property.GetCustomAttributes(typeof(DataBindFieldAttribute), true).Length == 0) { return(null); } if (!property.CanRead) { return(null); } var option = new DataBindOption() { Namespace = type.Namespace, ClassName = type.FullName, ShortClassName = type.Name, FieldName = property.Name, FieldType = Utilites.GetFriendlyTypeName(property.PropertyType), CanRead = property.CanRead, CanWrite = property.CanWrite, Events = GetEvents(type, property.Name), }; return(option); }
/// <summary> /// Create support scripts for the specified type. /// </summary> /// <param name="type">Type.</param> /// <param name="path">Path to save scripts.</param> public static void Run(Type type, string path) { var options = DataBindOption.GetOptions(type); foreach (var option in options) { var gen = new DataBindGenerator(option, path); gen.Generate(); } }
/// <summary> /// Constructor. /// </summary> /// <param name="option">Data.</param> /// <param name="path">Path to save files.</param> public DataBindGenerator(DataBindOption option, string path) { Option = option; SavePath = path; foreach (var ev in Option.Events.Keys) { Events.Add(new DataBindEvents() { ClassName = Option.ShortClassName, EventName = ev, Arguments = Option.Events[ev], }); } }
static DataBindOption GetOption(Type type, FieldInfo field) { if (field.GetCustomAttributes(typeof(DataBindFieldAttribute), true).Length == 0) { return(null); } var option = new DataBindOption() { Namespace = type.Namespace, ClassName = type.FullName, ShortClassName = type.Name, FieldName = field.Name, FieldType = Utilites.GetFriendlyTypeName(field.FieldType), Events = GetEvents(type, field.Name), }; return(option); }
/// <summary> /// Check is Data Bind support can be added to the specified type. /// </summary> /// <param name="type">Type.</param> /// <returns>true if support can be added; otherwise false.</returns> public static bool IsValidType(Type type) { var options = DataBindOption.GetOptions(type); return(options.Count > 0); }