我有一个方法,我想始终在属性的get访问器之前运行.如果不在get {}中手动运行方法,这是否可行?这是我想要工作的一个例子.
private string _someString;
private string _someOtherString;
public string SomeString
{
get { return _someString; }
}
public string SomeOtherString
{
get { return _someOtherString; }
}
public void AlwaysRun()
{
// Code to always run here.
}
Run Code Online (Sandbox Code Playgroud)
这在.NET框架中本身是不可能的.
但它可以使用称为AOP,面向方面编程的技术来完成.这里有一个很好的解释:http://www.sharpcrafters.com/aop.net.AOP就是在方法调用之前或之后注入代码; 这是你想要做的.有两种方法可以执行此操作:在运行时或编译时.运行时方式通过覆盖虚方法动态生成实现,因此它需要您的方法是虚拟的.如果编译时间,则修改实际代码(或IL).
一个很好的编译时间AOP框架是PostSharp.对于运行时AOP,框架的示例可以是Castle DynamicProxy.