C# 赋值操作符的重载解决办法

一、需求:

为了实现一个动态指标监控系统,需设计一个Number类,Number 类具备可监控值变化的能力。

Number类包含一个真值TrueValue,一个Changed事件,以及相应的方法。

Number类的实例n既可以直接定义为一个数值,又可以等于n1+n2,或者等于n1*n2,或者等于n3,或者等于n1+n2*n3等计算结果 

期望达到n在定义后,任何赋值、或者参数的变化都能够触动n的changed事件

即能够监控n的所有直接的变化,也能监控间接的变化。

为了实现计算,我已经对Number重写+,-,*,/等于运算操作符

二、发生的问题:

假设按此顺序执行:

Number n = new Number(1);

n.Changed += n_Changed;

n = n1+n2; 

那么此时n会丢失已经注册的Changed事件,因为=无法重写,n1+n2 计算出来的新的Number nx 已经将 n覆盖掉。

但C#赋值操作符无法重载,无法将n已经注册的changed事件赋值给nx。

三、请问,如优雅的实现赋值操作符 = 的重载?

以实现可以将n 已经注册的changed事件赋值给nx,实现n = 一个新值时, 能够触动n已经注册的Changed事件?

比如:=运算符是否有相应的函数可以重写?

当然我可以先取出n的Changed 事件,再赋值给nx,但这不优雅。

非得用 = 吗,写一个set方法不香吗。。。

冲动四