如何在c#中获得从低级类属性到某些顶级类属性的引用

本文关键字:属性 引用 | 更新日期: 2023-09-27 18:13:03

如何在c#中获得从低级类属性到某些顶层属性的引用?

是的. .让我们假设有一个类,它的层次结构有10个级别。在某个时刻,我需要从第10层获得对第3层某些属性的引用。然后改变它。让我们想象一下,一些底层属性是一个Timer,它自己做一些事情并需要这种访问。

有可能吗?

谢谢你的提示!

更新:确实,我们可以做一些外部对象来完成这项工作…但是我们的想法是将所有的逻辑都保留在类中

如何在c#中获得从低级类属性到某些顶级类属性的引用

我不确定什么类层次结构需要10个级别(这似乎过于复杂,应该重新评估,参见Gang of Four中的结构模式,如Composite或Decorator,以便您可以减少非常大的继承结构)。

我想了解得墨忒耳定律也是有益的。本质上,您不应该搜索您想要更改的属性或属性,而应该请求它。

简单地创建一个接口,如ISpecificAttributeProvider,在第3层实现,然后在第10层检查当前对象是否实现了该接口。

public interface ISpecificAttributeProvider
{
   object GetSpecificAttribute();
}
public class ThirdLevel : SecondLevel, ISpecificAttributeProvider
{
   private object _attributeInQuestion;
   public object GetSpecificAttribute()
   {
      return _attributeInQuestion;
   }
}
public class TenthLevel: NinthLevel
{      
   public void Method()
   {
      if (this is ISpecificAttributeProvider)
         object attribute = GetSpecificAttribute();
   }
}

希望能有所帮助