是否有像onSaveDataMethod.Call这样的东西,比如C#中的触发器
我不想直接在代码中调用方法。
例如:
bool save()
{
validate() // id do not want to call this validate() method
// it should be called automatically before saving method
saveRecord();
return true;
}
答案 0 :(得分:0)
不幸的是答案是不,你必须编写自己的validation
方法。
答案 1 :(得分:0)
您可以将Intercepting Methods与PostSharp一起使用。创建方面(参见more):
using PostSharp.Aspects;
using PostSharp.Serialization;
[PSerializable]
public class ValidationAspect : OnMethodBoundaryAspect
{
public override void OnEntry(MethodExecutionArgs args)
{
// make you validation here
validate();
}
}
将属性应用于您的方法:
[ValidationAspect]
bool save()
{
saveRecord();
return true;
}
答案 2 :(得分:0)
你可以做这样的事情,假设你有一个所有其他人继承的基类。只有基类才能知道internalSave函数,所有继承的类都会调用save并自动验证。
修改保存功能的成员访问修饰符(受保护)以满足您的需要,但将internalSave保留为私有,以避免调用该功能并绕过验证。
%rbp
如果你不能拥有一个基类,因为你已经存在一个你无法修改的基类,你也可以看一下使用扩展方法
protected bool save(){
validate(); //Assuming this throws an exception to inform it is not valid
return internalSave();
}
private bool internalSave(){
saveRecord();
return true;
}