私はいくつかのアプリケーションで、TreeViewコントロールを使用してビジネスオブジェクトを表現しています。現在、ビジネスオブジェクトとTreeNode間のリンクは、TreeNodeのTagプロパティによって維持されます。私はリンクが "タイト"ではないと思うので、これにはあまり喜んでいません。たとえば、ビジネスオブジェクトを持たないTreeNodeオブジェクトが存在する可能性があります。ビジネスオブジェクトの状態に応じてTreeNodeイメージを更新することもできます。したがって、私はツリーノードからの私自身の特別なのTreeNodeクラス派生:私は「のようにTreeNodeオブジェクトを返し、基本クラスのプロパティやメソッドを呼び出すたびにキャストする必要があり、この最小限のアプローチで基本クラスのメソッド、プロパティ、...をどれだけ優先させるか。 .net TreeNodeクラス
class ActionTreeNode : TreeNode
{
private Action mAction;
public Action Action
{ get ... }
public ActionTreeNode(Action action)
: base()
{
if (action == null) throw new ArgumentNullException("action", "Paramter action must not be null.");
mAction = action;
}
public void UpdateState()
{
switch (mAction.ActionState)
{
case ActionState.Passed:
SelectedImageIndex = 3;
ImageIndex = 3;
break;
case ActionState.Failed:
SelectedImageIndex = 2;
ImageIndex = 2;
break;
...
}
return;
}
}
を(ActionTreeNode)MYNODE 。親"。解決策は、すべてのメソッドまたはプロパティを上書きまたは上書きし、ActionTreeNode型のオブジェクトを返すことです。 キャストを避けるために、最小限のアプローチをとる方が適していると思いますか、すべてのメソッド、プロパティを再実装しようと努力しますか?ありがとう。
私はこのバージョンも好きです。たぶん、パラメータとしての文字列を持つActionTreeNode ctorも同様にオーバーライドする必要があります。 – crauscher