You could make your interface generic:
public interface IArticle<T> where T : struct
{
T ConditionStatus { get; set; }
}
public class ArticleA : IArticle<ColorEnum>
{
public ColorEnum ConditionStatus { get; set; }
}
public class ArticleB : IArticle<PunctuationEnum>
{
public PunctuationEnum ConditionStatus { get; set; }
}
Note that you can't enforce that T
is an enum... and you do need to specify which enum your implementation will use. It's not entirely clear whether that's going to help you or not, but it's about all there is...