あなたは他のすべてが継承されている基本クラスを持っていると仮定すると、このような何かを行うことができます。基本クラスのみがinternalSave関数を知り、すべての継承クラスはsaveを呼び出し、自動的に検証されます。
save関数のメンバアクセス修飾子(protected)を必要に応じて変更しますが、internalSaveをプライベートにして、その関数を呼び出さずに検証をバイパスします。
protected bool save(){
validate(); //Assuming this throws an exception to inform it is not valid
return internalSave();
}
private bool internalSave(){
saveRecord();
return true;
}
1はすでにあなたが変更できないことが存在するので、あなたは、基本クラスを持つことができない場合は、代わり
public static class BaseClassNameExtensions
{
public static bool ValidatedSave(this BaseClassName obj)
{
obj.validate(); //again assuming it throws an exception
return obj.save();
}
}
拡張メソッドを使用して見て可能性がありません、しない限りがありませんあなたは1つを作る。 –
あなたはその効果を得ることができます...しかし、それは少し複雑です... https://en.wikipedia.org/wiki/Interceptor_pattern – DarkSquirrel42
代理人とイベントを使用することは可能です。 –