Reputation: 1
I am getting an "cannot convert from 'HTMLWriter.HeadingElement' to 'HTMLWriter.TextElement[]'" error in my Program.cs class.
namespace HTMLWriter { class Program { static void Main(string[] args) { Converter c = new Converter(@"C:\data\poem.txt", @"C:\data\poem.html"); c.convert();
c = new Converter(@"C:\data\quotes.txt", @"C:\data\quotes.html");
c.convert();
}
public static void example()
{
HTMLDocument doc = new HTMLDocument();
HeadElement head = new HeadElement();
head.Title = new TitleElement("This is a title");
doc.Head = head;
doc.Body = new BodyElement();
doc.Body.Add(new HeadingElement("This is a heading")); //error
doc.Body.Add(new ParagraphElement("This is a paragraph")); //error
doc.Body.Add(new ParagraphElement(null)); //error
doc.Body.Add(new ParagraphElement("This is a paragraph too")); //error
Console.WriteLine(doc.Render());
}
}
}
namespace HTMLWriter { class BodyElement : HTMLElement { private List _elements = new List();
public void Add(TextElement[] element)
{
for(int i = 0; i < element.Length; i++)
{
_elements.Add(element[i]);
}
}
public override string Render()
{
if(_elements.Count == 0)
{
return "<body>\n </body>";
}
for(int i = 0; i < _elements.Count; i++)
{
return "<body>" + _elements[i] + "</body>";
}
return "<body>\n</body>";
}
}
}
namespace HTMLWriter { class HeadingElement : TextElement { public HeadingElement(string text) : base(text) { Text = text; } public override string Render() { if(Text == null) { return "
"; } return "<h1>" + Text + "</h1>";
}
}
}
namespace HTMLWriter { class ParagraphElement : TextElement { public ParagraphElement(string text) : base(text) { Text = text; }
public override string Render()
{
if(Text == null)
{
return "<p></p>";
}
return "<p>" + Text + "</p>";
}
}
}
namespace HTMLWriter { abstract class TextElement : HTMLElement { private string _text; public string Text { get { return _text; } set { _text = value; } } public TextElement(string text) { Text = text; } } }
Upvotes: 0
Views: 76
Reputation: 982
It looks like the Add method takes an array of TextElements.
public void Add(TextElement[] element)
But you are calling the method with only one TextElement;
doc.Body.Add(new HeadingElement("This is a heading"));`
If you want to do both, I would suggest renaming the Add
method to AddRange
, then add a new Add
method as per below;
public void Add(TextElement element)
{
_elements.Add(element);
}
Upvotes: 1