Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/257.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 跟踪对自动实现属性的调用_C#_.net_Attributes_Aop - Fatal编程技术网

C# 跟踪对自动实现属性的调用

C# 跟踪对自动实现属性的调用,c#,.net,attributes,aop,C#,.net,Attributes,Aop,是否有一种方法可以跟踪和拦截对自动实现的属性中的值的调用 我希望代码看起来有点像这样: [Tracked] public int SomeProperty { get; set; } 理想情况下,该属性将能够截获对属性值的更改。这可能吗 我不想让第二段代码稍后在对象上旋转并请求值,但是属性应该在设置时固定值。否。这样做的方式是不使用自动属性。唯一可能的解决方案是,使用类似于在类周围创建自动包装器的东西,并让它跟踪更改,但这是一项很难实现的工作。您应该能够使用AOP框架来实现这一点,例如(我注意

是否有一种方法可以跟踪和拦截对自动实现的属性中的值的调用

我希望代码看起来有点像这样:

[Tracked]
public int SomeProperty { get; set; }
理想情况下,该属性将能够截获对属性值的更改。这可能吗


我不想让第二段代码稍后在对象上旋转并请求值,但是属性应该在设置时固定值。

否。这样做的方式是不使用自动属性。唯一可能的解决方案是,使用类似于在类周围创建自动包装器的东西,并让它跟踪更改,但这是一项很难实现的工作。

您应该能够使用AOP框架来实现这一点,例如(我注意到它现在已经商业化了)。还有一些链接,但有些链接已经失效。

如果您想要一个在运行时工作的解决方案,那么您需要一个面向方面的编程(AOP)框架;我已经成功地使用了。它不像PostSharp那样成熟,但工作原理相同:它将修改已编译的代码,生成另一个程序集

如果您只是想将其用于测试(或分析),那么还有另一个选项:(也是免费的)。它的工作原理非常不同;它使用“迂回”类型的注入在程序运行时更改程序,拦截属性getter和setter方法