Casting to less generic types
Did anybody encounter such a use case before, and found a better way to solve it?


There's the IEnumerable pattern:

public interface IValidation
{
    bool IsValid(object obj);
}

public interface IValidation&lt;T&gt; : IValidation
{
    bool IsValid(T t);
}

public abstract class BaseValidation&lt;T&gt; : IValidation&lt;T&gt;
{
    public bool IsValid(object obj)
    {
        return IsValid((T)obj);
    }

    public abstract bool IsValid(T t);
}


Whether it's better or not is debatable, but it should at least be familiar to anyone who has to maintain your code.