Вы действительно пытаетесь использовать Enum для различения нескольких вариантов объекта Content, не пытаясь создать несколько версий объекта Content.
Хорошая ставка, что поведение вашего приложения будет зависеть от того, какой Enum установлен. Например, у вас может быть что-то вроде:
public Content
{
private ContentTypes contentType;
public string ToString()
{
switch (contentType)
...
}
}
Это сведет вас с ума с точки зрения ремонтопригодности. Вместо этого рассмотрите возможность использования наследования, чтобы получить поведение, которое вы ищете:
public Content
{
public abstract string ToString();
}
public NewsStory : Content
{
public override string ToString() { /* Appropriate formatting of output */ }
}
public Article : Content
{
public override string ToString() { /* Appropriate formatting of output */ }
}
Теперь, чтобы по-настоящему проявить фантазию (и использовать подход «Дизайн по контракту»), рассмотрите все, что общего у любого Контента, и определите интерфейс, например, IContent. Если вы это сделаете, вы можете сделать такие вещи, как:
List<IContent> myContent;
foreach (IContent ic in myContent) ic.ToString();