Getting validation from inherited classes
Here's a C# version using a cross of the template method pattern and the collector pattern.
It'll pick up any issues from any derivative implementing the AddValidationIssues method.

public abstract class BaseClass
{
    public List&lt;string&gt; GetValidationIssues()
    {
        var result = new List&lt;String&gt;();
        if (Quantity &lt; 0) result.Add("Quantity is invalid");  
        AddValidationIssues(result);
        return result;
    }

    protected virtual void AddValidationIssues(List&lt;string&gt; result)
    {
    }
}

public class ProductBase : BaseClass
{
    protected override void AddValidationIssues(List&lt;string&gt; result)
    {
        if (string.IsNullOrWhiteSpace(Name)) result.Add("Name not specified");   
    }
}


As a sidenote, I'd look for another name than "BaseClass". It doesn't say anything about what it does.