J'ai une classe Layer avec une propriété Name unique qui sert d'identifiant :
public class Layer {
public string Name { get; set; }
...
// Various other properties
...
}
En outre, j'ai un DiagramHandler qui gère (entre autres) la gestion des couches.
public class DiagramHandler {
private Layer _activeLayer;
public Layer ActiveLayer {
get { return _activeLayer; }
set {
Layer layer = DiagramLayers.FirstOrDefault(l => l.Name.Equals(value.Name);
if (layer != null) {
_activeLayer = layer;
} else {
// Error handling
}
}
}
public ICollection<Layer> DiagramLayers { get; set; }
}
Comme vous pouvez le voir, j'ai stocké toutes les couches possibles dans une collection au sein du gestionnaire et une seule couche active dans sa propre propriété. Si cette dernière est définie, l'un des calques de la collection est identifié et défini comme le calque actif. Maintenant, comme je n'ai besoin que du nom de la couche pour l'identifier correctement, je me demande si je ne pourrais pas transmettre une chaîne de caractères au setter de ActiveLayer au lieu d'une couche entière. Voici ce que je pourrais faire :
// Yes, the DiagramHandler is a singleton
DiagramHandler.Instance.ActiveLayer = "Background";
au lieu de le faire :
DiagramHandler.Instance.ActiveLayer = new Layer() { Name = "Background" };
Je sais que je pourrais utiliser une fonction setter (ce que je fais actuellement) mais je préférerais utiliser un simple setter de propriété et j'étais curieux de savoir s'il y a une fonctionnalité du langage que je ne connais pas ou s'il y a une solution plus élégante et plus agréable.