我正在阅读CodeBetter.com的Business Primitives,并且正在酝酿这个想法。以他的Money为例,如何以一种与常规值类型类似的方式实现这个功能?重载“设置为等于”运算符
我的意思是这样:
Money myMoney = 100.00m;
相反的:
Money myMoney = new Money(100.00m);
我明白如何覆盖所有运营商允许的功能做数学等等,但我不”不知道需要重写什么以允许我正在尝试做什么。
这样做的想法是最大限度地减少实现新类型时所需的代码更改,并保持原来的类型不变,只需使用不同的值类型名称和业务逻辑功能。
理想情况下,我会继承Integer/Float/Decimal或任何必需的,并根据需要重写,但显然不适用于结构。
啊哈,这就是我一直在寻找! 是否有可能将其隐式转换为它所分配的类型? 我可以举例: decimal dec = myMoney; – 2010-01-30 03:50:23
@Aquitarum Custos:是的,你完全可以。只要说'公共静态隐式操作符小数(金钱){return money.Amount; }'然后'小数d =金钱'是完全合法的。因此,你必须要说的魔术词是“公共静态隐式运算符”,然后你给出返回类型(所以这里是'decimal'),然后,作为运算符的单个参数,你想要转换的类型的参数所以在这里'钱')。请注意,返回类型或参数类型之一必须是封闭类的类型。因此'public static implicit operator string(int i)'是不合法的。 – jason 2010-01-30 04:02:19
很高兴知道它的双向作用,谢谢! – 2010-01-30 04:23:52