如何根据比较对象的新旧值来设置变量

How to set a variable based on compare old and new value of object

我正在寻找等效于 javascript 监视功能的 c#。我看到了一些不同的例子,但它们似乎超出了我的问题所需要的。我在网络 api 控制器中有一个变量设置为“0”。如果对象中的值属性更改 I 将变量更改为“1”

反对观看

public class parameters
{
    public string foo { get; set; }
    public string bar { get; set; }
    public string widget { get; set; }
}

Api 控制器

 [HttpPost]
    public string Post([FromBody]parameters parameters)
    {
      // initial value
      string bChanged = "0";

       //if any property value in parameters changes
      string bChanged = "1";
    }

您可以编写扩展方法来检查对象值是否已更改。

public static class Extensionparameters
 {
    private static parameters _initialParameters;

    public static void RegisterObject(this parameters parameters)
    {
        _initialParameters = parameters;
    }

    public static String CheckChanges(this parameters value)
    {
        if (value.bar != _initialParameters.bar || value.foo != _initialParameters.foo ||
            value.widget != _initialParameters.widget)
        {
            return "1";
        }
        return "0";
    }
}

然后在你的代码中你可以这样做

[HttpPost]
public string Post([FromBody]parameters parameters)
{


       var initial = new parameters {bar = "a", foo = "a", widget = "a"};
       initial.RegisterObject();
       var changed = new parameters {bar = "v", foo = "a", widget = "a"};
       string bChanged=  changd.CheckChanges();

}