gpt4 book ai didi

c# - 从子元素引用父元素的值

转载 作者:行者123 更新时间:2023-11-30 15:52:08 25 4
gpt4 key购买 nike

我正在尝试找出一种更优雅的方式来在 C# 中设置父项的属性。我目前将父元素传递给子元素,并以这种方式引用它。这看起来既麻烦又可能不正确。

child :

 public class ValidatedField<T>
{
public OpenIssues parent { get; set; }
//Other values
public void Highlight()
{
parent.isNotValid = true;
isHighlighted = true;
}
}

和父级:

public class OpenIssues
{
public OpenIssues()
{
DateAppealFiled = new ValidatedField<DateTime?>(this);
}
public bool isNotValid { get; set; }
public ValidatedField<DateTime?> DateAppealFiled { get; set; }
}

在这种情况下,是否有更简化的方式来引用父级?还是我注定要将整个父级发送给子级,只是为了修改父级中的一个值?

最佳答案

Is there a more streamlined way to reference the parent in this case? Or am I doomed to sending the entire parent to the child, just to modify one value in the parent?

整个父级(用你的话来说)只是几个字节的引用/指针

但是,

您基本上可以通过以下 3 种方式之一完成此操作

  1. 传递来自 parent 的具体引用或接口(interface)。
  2. 使用事件/委托(delegate)/操作并注册然后在更新时触发它们
  3. 或者解耦的发布/订阅消息系统或中介

你做的很好,虽然都有缺点,而且在不同方面都很麻烦

最现代的方法是解耦消息系统,这在您不想将 View 模型和类耦合在一起的 View 模型中很常见。但是,对于琐碎的情况,这很可能是矫枉过正。

同样, Action 和事件也有它们的位置。 parent (或某人)订阅和取消订阅(嗯......应该)。

但是,如果您不介意父子之间的紧耦合,并且几乎不需要在不同的父子配置中使用它们,则只需使用引用即可。没有伤害。

关于c# - 从子元素引用父元素的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55253402/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com