Lets say I have object A which properties I want to assign to Object B and by modifying object B I'd like Object A reference type properties to change also. Objects are not the same.
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
}
How code should look like? so that Objects A property Link1 would be updated by calling
var a = new A(){ Link1 = null};
var b = new B() {Link = a.Link1};
ProcessLink(ref B);
now a.Link1 is equal to b.Link
CodePudding user response:
You're describing B
being a proxy for A
. One way to do this would be to give class B
a reference to an instance of A
. Instead of auto-properties, write getters and setters for B
that actually operate on the A
. You could give A
a method to obtain an instance of B
.
An example of this pattern is CancellationTokenSource
(analogous to A
) and CancellationToken
(B
). The tokens are proxies that expose the cancelled property of the source, but don't let you cancel it.
Consider whether it makes more sense to make B
an interface that A
implements.