internal interface IVisualElement
{
IEnumerable<IVisualElement> Children { get; }
void Draw(IVisualElement parent);
}
internal interface IVisualElement<in T> : IVisualElement where T : IVisualElement
{
void DrawGeneric(T parent);
}
internal class ConcreteVisualElement : IVisualElement<Node>
{
public IEnumerable<IVisualElement> Children { get; } = new List<IVisualElement>();
public void DrawGeneric(Node parent)
{
throw new System.NotImplementedException();
}
public void Draw(IVisualElement parent)
{
DrawGeneric(parent as Node);
}
}
internal interface IVisualElement
{
IEnumerable<IVisualElement> Children { get; }
void Draw(IVisualElement parent);
}
internal interface IVisualElement<in T> : IVisualElement where T : IVisualElement
{
void DrawGeneric(T parent);
}
internal class ConcreteVisualElement : IVisualElement<Node>
{
public IEnumerable<IVisualElement> Children { get; } = new List<IVisualElement>();
public void DrawGeneric(Node parent)
{
throw new System.NotImplementedException();
}
public void Draw(IVisualElement parent)
{
DrawGeneric(parent as Node);
}
}