Quindi, ho il seguente problema:
Ho un numero di elementi ordinati, ordinati nel modo seguente:
- Tipo 1: deve essere il primo elemento. (solo uno possibile, sempre presente)
- Tipo 2: deve essere il secondo e i seguenti elementi, se presenti.
- Tipo 3: deve essere l'ultimo ordinato.
Ha dichiarato un po 'più succintamente / pseudoregex:
12*3+
Ora, quando costruisci questi elementi, lo faccio in un metodo, dove è facile fare qualcosa del tipo:
public List<IElement> CreateElements(...)
{
var list = ...;
list.Add(new Type1());
list.AddRange(GetType2Elements());
list.AddRange(GetType3Elements());
}
Tuttavia, non esiste un ordine semantico esplicito - è solo una lista, che mi capita di costruire in un certo modo.
Un modo più esplicito è fare in modo che IElement implementino IComparable, quindi utilizzare un elenco ordinato in modo esplicito e restituirlo. Ciò porterebbe il "ordinamento" al di fuori del mio metodo di costruzione e ordinerebbe le entità indipendentemente da come sono state create.
Tuttavia, è improvvisamente un po 'meno banale, dal momento che almeno 3 diversi metodi di confronto devono essere implementati.
Che cosa sceglieresti?