一般的な傍受戦略では不可能です。
しかし、コンパイル時に動作する AOP フレームワークのほとんどはそれを行うことができます。(例:PostSharp)
私はオープンソースのNConcern AOP Frameworkに取り組んでいます。
これは単純な .NET AOP フレームワークであり、メソッドを交換することによって実行時にインターセプトを可能にします。
ファクトリ パターンや継承の必要なしに、仮想メソッド、非仮想メソッド、および静的メソッドに対してジョブを実行できます。
私の推奨事項は、AOP を「モンキー パッチ」に使用しないようにすることです。静的メソッドは、主流ではなく、「シングルトン使用のショートカット」のみにする必要があります。
あなたの場合、簡単なプロキシパターンを有効にするために、ショートカップやDI(依存性注入)などの静的メソッドでシングルトンパターンを使用する方が簡単です。
例 :
インターフェース
public interface IRepository
{
IQueryable<T> Query<T>()
where T : class;
}
DIを使用した砂糖(工場経由)
static public class Repository
{
//You can wrap the interface (proxy) here if you need...
static private readonly IRepository m_Repository = MyDIFactory.Import<IRepository>();
static public IQueryable<T> Query<T>()
where T : class
{
return Repository.m_Repository.Query<T>();
}
}
使用法
Repository.Query<T>().CacheForMinutes(10);
Repository.Query<T>().LogWhenErrorOccurs();