訪問者パターンについて質問があります。現在、2 つのアセンブリがあります。私の最初のアセンブリには、いくつかのインターフェイスが含まれています。
public interface INode
{
void Visit(INodeVisitor visitor);
}
public interface INodeVisitor
{
void VisitContainer(IContainer container);
}
public interface IContainer : INode
{
}
そして私の2番目のアセンブリ
class Program
{
static void Main(string[] args)
{
ContainerVisitor visitor = new ContainerVisitor();
visitor.VisitContainer(new Container());
}
}
public class ContainerVisitor : INodeVisitor
{
public void VisitContainer(IContainer value)
{
Container container = value as Container;
// Do some stuff...
}
}
public class Container : IContainer
{
public void Visit(INodeVisitor visitor)
{
visitor.VisitContainer(this);
}
}
私がしたいのは、ContainerVisitor クラスでキャストする必要を避けることです。Container を直接参照したいと思います。インターフェイス INodeVisitor インターフェイスを Container を使用するように変更できません。何か案は?キャストするだけでいいですか?
乾杯
ローハン