既存のオブジェクトの抽象表現を作成したいと考えています。この例では、System.Windows.Forms.TreeNode の機能をラップします。次のようにアダプターを作成することから始めました...
編集:抽象化の目的により、TreeNode を知らなくてもアプリケーションで ITreeNodeAdapter を使用できます。後の段階で別の ITreeNodeAdapter を実装でき、アプリケーションは引き続き機能します。基本的に、TreeNode への依存関係を削除したいと考えています。
public interface ITreeNodeAdapter
{
string Title {get;set;}
void Add(ITreeNodeAdapter adapter);
}
public class TreeNodeAdapter : ITreeNodeAdapter
{
public AbstractTreeNode(TreeNode node)
{
this.Node = node;
}
private TreeNode Node {get;set;}
public string Title
{
get { return _node.Text; }
set { _node.Text = value; }
}
public void Add(ITreeNodeAdapter adapter)
{
// What should i do here?
var treeNodeAdapter = adapter as TreeNodeAdapter;
if(treeNodeAdapter != null)
{
this.Node.Nodes.Add(treeNodeAdapter.Node);
}
}
}
子ノードを受け入れるようにクラスを拡張する際に問題があります...上記で使用したアプローチはあまり良くありません。どうすれば改善できるでしょうか?