public static TypeScriptClassDefinition RefactClass(this object obj) { var sourceType = obj.GetType(); var classDefinition = new TypeScriptClassDefinition { Name = sourceType.Name }; var typeResolver = new TypeScriptTypeResolver(); var namingConvention = new TypeScriptNamingConvention(); foreach (var property in sourceType.GetProperties().Where(item => item.CanRead && item.CanWrite)) { classDefinition.Properties.Add(new PropertyDefinition(typeResolver.Resolve(property.PropertyType.Name), namingConvention.GetPropertyName(property.Name))); } return(classDefinition); }
public static TypeScriptClassDefinition RefactClass(this object obj, string name = null, ICodeNamingConvention namingConvention = null) { var sourceType = obj.GetType(); var classDefinition = new TypeScriptClassDefinition { Name = string.IsNullOrEmpty(name) ? sourceType.Name : name }; if (namingConvention == null) { namingConvention = new TypeScriptNamingConvention(); } foreach (var property in sourceType.GetProperties().Where(item => item.CanRead)) { classDefinition.Fields.Add(new FieldDefinition(TypeScriptTypeResolver.Resolve(property.PropertyType.Name), namingConvention.GetFieldName(property.Name))); classDefinition.Properties.Add(new PropertyDefinition(TypeScriptTypeResolver.Resolve(property.PropertyType.Name), namingConvention.GetPropertyName(property.Name))); } return(classDefinition); }