は私が識別子としてのユニークな名前のプロパティを持つレイヤのクラスを持っている:プロパティの型自体と異なる型のプロパティセッターを呼び出すことはできますか?
public class Layer {
public string Name { get; set; }
...
// Various other properties
...
}
さらに私は(他のものの間で)扱うDiagramHandler層管理
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; }
}
あなたが見ることができるようにする必要があり、私は可能なすべてのレイヤーをハンドラー内のコレクションに格納し、現在アクティブなレイヤーはそれぞれ独自のプロパティーに格納しています。後者が設定されると、コレクション内のレイヤの1つが識別され、アクティブレイヤとして設定されます。さて、レイヤーを適切に識別するために実際にレイヤー名が必要なだけなので、レイヤー全体ではなく、ActiveLayerのセッターに文字列を渡すことができるのだろうかと思います。
// Yes, the DiagramHandler is a singleton
DiagramHandler.Instance.ActiveLayer = "Background";
代わりにこれを実行することの::だから私はこれを行うことができ
DiagramHandler.Instance.ActiveLayer = new Layer() { Name = "Background" };
を私はsetter関数を使用することができます知っています(私は実際に今やるいる)が、私は好みます私は知らない言語機能がある場合、またはより洗練された素晴らしいソリューションがある場合は、素朴なプロパティの設定を使用して、好奇心が強いです。
暗黙の演算子を使用すると、文字列からレイヤーオブジェクトへの変換を処理できます。暗黙的な変換を検索します。アイデンティティーとして機能している場合は、レイヤーのNameプロパティを不変にすることもできます。 – Matt
'ActiveLayerName'と呼ばれる2番目の' string'を追加して、それをレイヤー名の取得/設定に使うのはなぜですか? –