CodeGenFile generateExtension(string contextName, ComponentData data) { var memberData = data.GetMemberData(); var componentName = data.GetFullTypeName().ToComponentName(ignoreNamespaces); var template = memberData.Length == 0 ? FLAG_COMPONENT_TEMPLATE : STANDARD_COMPONENT_TEMPLATE; var fileContent = template .Replace("${ContextName}", contextName) .Replace("${ComponentType}", data.GetFullTypeName()) .Replace("${ComponentName}", componentName) .Replace("${componentName}", componentName.LowercaseFirst()) .Replace("${prefixedComponentName}", data.GetUniqueComponentPrefix().LowercaseFirst() + componentName) .Replace("${memberArgs}", getMemberArgs(memberData)) .Replace("${methodArgs}", getMethodArgs(memberData)); return(new CodeGenFile( contextName + Path.DirectorySeparatorChar + "Components" + Path.DirectorySeparatorChar + contextName + componentName.AddComponentSuffix() + ".cs", fileContent, GetType().FullName )); }