我希望将一个解析器实例传递给一个对象及其所有子节点,它们也可能有子节点。如果没有每个对象包含另一个实例,那么传递解析器的最佳方法是什么?
让我说我有:
CustomControl
的对象,其中包含UIElementCollection
属性CustomControl
派生的其他对象,因此拥有自己的集合Parser
的对象,它将实现IParser
Parser
将包含一个方法:public static CustomControl[] Parse(string s)
。
我想将解析器类传递给每个CustomControl
派生对象及其所有子节点,这些子节点也派生自CustomControl
。这些孩子可能有自己的孩子。
我将允许用户将解析器更改为另一个实现IParser
的对象。
答案 0 :(得分:0)
您可以直接将解析器引用传递给子级。
当您将对象分配给变量(包括字段或参数)时,您只是分配对该对象的引用,并且您永远不会复制,除非该对象是值类型,如{ {1}}或int
。
如果您不希望子节点包含每个引用解析器的字段,您可以在某处将解析器引用分配给静态成员,然后子节点可以从该静态成员获取解析器。