跨多个对象共享对象实例的最佳方法是什么?

时间:2014-11-24 15:29:31

标签: c# wpf

简介

我希望将一个解析器实例传递给一个对象及其所有子节点,它们也可能有子节点。如果没有每个对象包含另一个实例,那么传递解析器的最佳方法是什么?

深度

让我说我有:

  • 名为CustomControl的对象,其中包含UIElementCollection属性
  • CustomControl派生的其他对象,因此拥有自己的集合
  • 另一个名为Parser的对象,它将实现IParser

Parser将包含一个方法:public static CustomControl[] Parse(string s)

我想将解析器类传递给每个CustomControl派生对象及其所有子节点,这些子节点也派生自CustomControl。这些孩子可能有自己的孩子。

我将允许用户将解析器更改为另一个实现IParser的对象。

1 个答案:

答案 0 :(得分:0)

您可以直接将解析器引用传递给子级。

当您将对象分配给变量(包括字段或参数)时,您只是分配对该对象的引用,并且您永远不会复制,除非该对象是值类型,如{ {1}}或int

如果您不希望子节点包含每个引用解析器的字段,您可以在某处将解析器引用分配给静态成员,然后子节点可以从该静态成员获取解析器。