public static TypeScriptInterfaceDefinition RefactInterface(this TypeScriptClassDefinition classDefinition, ICodeNamingConvention namingConvention = null, params string[] exclusions) { if (namingConvention == null) { namingConvention = new TypeScriptNamingConvention(); } var interfaceDefinition = new TypeScriptInterfaceDefinition { Namespaces = classDefinition.Namespaces, AccessModifier = AccessModifier.Public, Name = namingConvention.GetInterfaceName(classDefinition.Name) }; foreach (var @event in classDefinition.Events.Where(item => item.AccessModifier == AccessModifier.Public && !exclusions.Contains(item.Name))) { interfaceDefinition.Events.Add(new EventDefinition(@event.Type, @event.Name)); } foreach (var property in classDefinition.Properties.Where(item => item.AccessModifier == AccessModifier.Public && !exclusions.Contains(item.Name))) { interfaceDefinition.Properties.Add(new PropertyDefinition(property.Type, property.Name) { IsAutomatic = property.IsAutomatic, IsReadOnly = property.IsReadOnly }); } foreach (var method in classDefinition.Methods.Where(item => item.AccessModifier == AccessModifier.Public && !exclusions.Contains(item.Name))) { interfaceDefinition.Methods.Add(new MethodDefinition(method.Type, method.Name, method.Parameters.ToArray())); } return(interfaceDefinition); }
public void TestGetClassName() { var namingConvention = new TypeScriptNamingConvention(); var name = namingConvention.GetClassName("dbService"); Assert.True(name == "DbService"); }
public void TestGetInterfaceName() { var namingConvention = new TypeScriptNamingConvention(); var name = namingConvention.GetInterfaceName("repository"); Assert.True(name == "IRepository"); }
public static TypeScriptClassDefinition RefactClass(this object obj, string name = null, ICodeNamingConvention namingConvention = null, bool convertPropertiesToFields = true) { 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)) { var type = TypeScriptTypeResolver.Resolve(property.PropertyType.Name); var fieldName = string.Format("m_{0}", namingConvention.GetFieldName(property.Name)); if (convertPropertiesToFields) { classDefinition.Fields.Add(new FieldDefinition(AccessModifier.Public, type, namingConvention.GetPropertyName(property.Name))); } else { classDefinition.Fields.Add(new FieldDefinition(AccessModifier.Private, type, fieldName)); classDefinition.Properties.Add(new PropertyDefinition(AccessModifier.Public, type, namingConvention.GetPropertyName(property.Name)) { IsAutomatic = true }); } } return(classDefinition); }