【问题标题】:Object A properties change through Object B properties as references对象 A 属性通过对象 B 属性更改为参考
【发布时间】:2022-01-17 22:36:15
【问题描述】:

假设我有对象 A,我想将哪些属性分配给对象 B,并且通过修改对象 B,我希望对象 A 的引用类型属性也进行更改。对象不一样。

Class A 
{
   public string Link1 { get; set;}
}

Class B 
{        
   public string Link { get; set;}
}

public void ProcessLink(ref B b)
{
    b.Link = serviceX.GetLink(); // this should set Obj A.Link value too
}

代码应该是什么样子?这样 Objects A 属性 Link1 将通过调用来更新

var a = new A(){ Link1 = null};
var b = new B() {Link = a.Link1};
ProcessLink(ref B);

现在 a.Link1 等于 b.Link

【问题讨论】:

  • 问题是什么?
  • @serge 如何通过对象 B 更改 obj A 的属性,对象 B 的参数中没有相同的属性名称

标签: c# .net oop


【解决方案1】:

您将B 描述为A代理。一种方法是为类B 提供对A 实例的引用。而不是自动属性,为B 编写实际在A 上运行的getter 和setter。你可以给A一个方法来获取B的实例。

这种模式的一个例子是CancellationTokenSource(类似于A)和CancellationTokenB)。令牌是暴露源的取消属性的​​代理,但不允许您取消它。

考虑将B 设为A 实现的接口是否更有意义。

【讨论】:

  • 接口很简单,但是 a 和 b 是不同的对象,只有一些 sared 属性...