我试图找出一种更优雅的方法来在c#中设置父对象的属性。我目前将父级传递给子元素,并以这种方式引用它。这看起来既麻烦又可能不正确。
孩子:
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; }
}
在这种情况下,是否还有更简化的方式来引用父项?还是我注定要将整个父级发送给孩子,只是为了修改父级中的一个值?
答案 0 :(得分:3)
在这种情况下,是否还有更简化的方式来引用父项? 还是我注定要把整个父母送给孩子,只是为了 修改父项中的一个值?
整个父级(用您的话来说)只是引用/指针的几个字节
但是
您基本上可以通过以下三种方式之一进行操作
您所做的一切都很好,尽管它们都有缺点,并且以不同的方式繁琐
最现代的方法是去耦消息传递系统,这在视图模型中很常见,因为您不想将视图模型和类耦合在一起。但是,这对于琐碎的情况很可能是过大的杀伤力。
动作和事件也有自己的位置。父母(或某人)订阅,然后退订(嗯...应该)。
但是,如果您不介意父子之间的紧密耦合,并且几乎不需要在不同的父子配置中使用它们,则只需使用引用即可。没有伤害。