检查属性以进行更改和更新

时间:2014-03-28 13:10:36

标签: c#

在我们的代码库中,我们有很多代码,比如

if (Some.Property != someValue)
{
    Some.Property = someValue;
}

Some.Property

  1. 来自第三方图书馆,无法更改
  2. 有昂贵的二传手
  3. 我想重构一下这个更清楚。在C ++中,我能够编写宏UpdateIfChanged

    除了为Some课程编写扩展程序之外,还有办法吗,例如与泛型?

1 个答案:

答案 0 :(得分:3)

为什么不根据您的需要使用通用方法。这个代码本身就是哪个?

类似的东西:

    public static void SetIfChanged<T>(ref T prop, T value)
    {
        if (object.Equals(prop, value) == false)
        {
            prop = value;
        }
    }

然后使用它:

SetIfChanged(ref someProp, someValue);

编辑v2 你的评论是正确的。这不适用于属性。

这个解决方案不是那么漂亮但有效:

    public static void SetIfChanged<T>(T value, T newValue, Action<T> action)
    {
        if (object.Equals(value, newValue) == false)
        {
            action(value);
        }
    }

用法:

SetIfChanged(t.ASDF, newVal, X => t.ASDF = newVal);